【问题标题】:Deploying a web site to azure as a package将网站部署为 azure 作为包
【发布时间】:2013-10-23 00:30:15
【问题描述】:

我正在启动一个将托管在 Azure 上的 ASP.net Web 项目,但我不确定是将项目开发为常规 ASP.net 应用程序并将其部署为 Azure 上的网站,还是将其开发为具有 Web 角色的云应用程序。

该项目的性质是一个网站(简单的数据库后端),但问题是部署之一。我们的目标是构建应用程序的版本,然后部署到登台和生产环境,这意味着构建的输出应该产生一个包(类似于msdn 中描述的内容)。

有很多关于如何create a service package 发布云服务的信息,但是关于将网站发布到 azure 的文章遵循“网络部署”方案,其中通过 Visual Studio 完成部署(来自 Azure 的订阅文件等) .

有没有办法将网站部署为 azure 作为一个包?还是 Web 部署需要 Visual Studio 之类的工具?如果是这样,那么将项目组合为仅具有 Web 角色的云服务是正确的选择吗?

【问题讨论】:

  • 看看 microsoft deploy,这是 VS 挂钩的“部署”机制,可以通过命令行和 IIS 进行控制
  • 在考虑部署包等细节之前,您应该考虑网站和云服务(具有 Web/Worker 角色)之间的核心差异。我发布了this answer 试图解决这个问题。

标签: c# azure web-deployment azure-web-app-service


【解决方案1】:

如果您希望能够直接在 Web 应用程序中更改文件,那么最好使用 Azure Web 应用程序,因为您可以通过 FTP 访问这些文件。

但是,Azure 云服务不提供 FTP 访问,至少不是一个有用的服务,它允许您使用 FTP 客户端上传文件。云服务是您不想被托管 Web 应用程序的许多细节所困扰的地方。虽然 Azure Web 应用程序做了很多相同的事情,但它还允许您进行 FTP 访问并在部署后直接访问文件。

【讨论】:

    【解决方案2】:

    David 的回答很好地涵盖了云服务选项。但是,我相信 Azure 网站选项非常适合您的需求。您不必使用 Visual Studio 进行部署。相反,您可以在 Visual Studio 中创建一个发布配置文件,该配置文件创建一个 Web 部署包,它只是一个 ZIP 文件,可以在以后使用命令行工具发布,不需要 Visual Studio。它还会生成一个 .deploy.cmd 文件,您可以运行该文件以部署到远程服务器,以及一个 SetParameters.xml 文件,其中包含您可以为目标部署环境修改的连接字符串等参数。 .deploy.cmd 文件调用执行实际部署的 msdeploy.exe。

    有关 Web Deploy 命令行部署的更多详细信息,请参阅thisSayed Ibrahim Hashimi's blog 上还有大量关于 MSDeploy 及其包系统的信息。

    【讨论】:

      【解决方案3】:

      我在问题下发表了评论,关于云服务和网站之间的差异,但要回答您关于打包的问题:云服务和网站采用两种不同的部署方法,并且没有真正“适用于两者”的打包:

      • 网站旨在接受来自任一源代码存储库的代码部署。这个想法是你有你的代码的标签版本,并将其从 TFS、git、Bitbucket 等中推送出来。你也可以使用 ftp 推送你的代码,或者将它放到一个保管箱文件夹中。因为网站在 IIS 中运行,并且由于您无法控制运行网站的 VM 场,所以您无法像使用云服务那样推送startup scripts;您无法安装注册表更新、COM 对象、msi 的...
      • 云服务是围绕无状态 VM 模型设计的。每次横向扩展(添加实例)时,都会启动基线 Windows Server VM,并将部署包的内容复制到新的 VM 实例并执行。这包括启动脚本、安装程序等。由于您对每个 VM 具有管理员级别的访问权限,因此您可以根据需要从启动脚本/OnStart() 对其进行配置。每个角色的定义都合并到一个部署包中。要更新一个或多个角色,您需要重新部署包。

      网站没有工具先决条件,而云服务需要 Visual Studio 或 Eclipse 来帮助您管理部署包。您还可以使用 PowerShell 和 Visual Studio 命令行工具来构建包,正如上面 cmets 中提到的@Ben Robinson。您还可以使用 PowerShell 创建和管理网站。云服务和网站都提供 StagingProduction 插槽。

      您不能将部署包推送到网站。

      【讨论】:

      • 这个答案很好。我最近才进入 Azure,一直在努力理解网站和云服务之间的根本区别。现在完全可以理解为什么一个网站需要一个登台环境。
      • +1 用于指出网站和云服务之间的差异
      • 新手体验,但我在这里记录了我的想法 - vijaytech.net/post/…。希望对您有所帮助
      • @David - 偷了机会 - 我是你在 Azure 上的博客/答案的忠实粉丝 :-)。是的,你是对的,我意识到,我通读了 OP 中的这句话——“我们的目标是构建应用程序的版本,然后部署到登台和生产环境”,所以思想会提醒他注意这方面的事情。谢谢你纠正我。在回答其他问题时,我会牢记。
      • @Rodolphe - 很好的收获。在推出该功能之前,我回答了最初的问题。我会相应地更新。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多