将网站作为包部署到Azure

4
我正在启动一个ASP.net Web项目,将在Azure上托管,但我不确定是将项目开发为常规ASP.net应用程序并将其部署为Azure上的Web站点,还是将其开发为具有Web角色的云应用程序。
该项目的性质是网站(简单的数据库后端),但问题是部署。我们的目标是构建应用程序的版本,然后部署到预发布和生产环境中,这意味着构建的输出应该产生一个单一的包(类似于msdn中描述的内容)。
有大量关于如何创建服务包以发布云服务的信息,但是关于将网站发布到Azure的文章遵循“Web部署”方案,其中通过Visual Studio进行部署(来自Azure的订阅文件等)。
是否有一种方法可以将网站部署到Azure作为包?或者像Visual Studio这样的工具是否需要进行Web部署?如果是这样,那么仅使用Web角色将项目组合成云服务是否是正确的选择?

看看微软部署,这是VS钩入其“部署”机制的地方,并且可以通过命令行和通过IIS进行控制。 - Ben Robinson
2
在考虑部署包等细节之前,您应该考虑Web Sites和Cloud Services(具有Web/Worker角色)之间的核心区别。我发布了这个答案,试图解决这个问题。 - David Makogon
3个回答

4
我在关于云服务和网站之间的区别的问题下发表了评论,但要回答您关于打包的问题:云服务和网站采用两种不同的部署方法,并且没有真正适用于两者的打包方式:
- 网站旨在接受来自源代码库的代码部署。思想是您有一个已标记版本的代码,并从 TFS,git,Bitbucket 等发布它。您还可以通过 ftp 将代码推送上去,或将其放入 dropbox 文件夹中。因为 Web Sites 运行在 IIS 中,并且因为您对运行 Web Sites 的 VM farm 没有任何控制权,所以您不能像云服务一样推送启动脚本;您不能安装注册表更新、COM 对象、msi 文件等。 - 云服务围绕着无状态 VM 模型设计。每次扩展(添加实例)时,会生成一个基线 Windows Server VM,并将部署包的内容复制到新的 VM 实例并执行。这包括启动脚本、安装程序等。由于您具有每个 VM 的管理员级访问权限,因此您可以根据需要配置它,从启动脚本 / OnStart() 中进行配置。每个角色的定义都合并到单个部署包中。要更新一个或多个角色,您需要重新部署该软件包。
网站没有工具前提条件,而云服务需要使用 Visual Studio 或 Eclipse 来帮助您管理部署包。您还可以使用 PowerShell 和 Visual Studio 命令行工具来构建软件包,如上面的 @Ben Robinson 在评论中提到的。您还可以使用 PowerShell 创建和管理网站。云服务和网站都提供暂存和生产插槽。
您无法将部署包推送到 Web Sites。

很好的回答。我最近才开始接触Azure,一直在努力理解网站和云服务之间的根本区别。现在我完全明白为什么网站需要一个分阶段环境了。 - MoSlo
我是一个新手,但我在这里记录了我的想法 - http://vijaytech.net/post/Windows-Azure-Virtual-Machine-vs-Cloud-Services。希望对您有所帮助。 - VJVRR
1
@David - 抢先一步 - 我是你在Azure博客/回答方面的忠实粉丝 :-)。是的,你说得对,我意识到了,我仔细阅读了OP的话 - “我们的目标是构建应用程序的版本,然后部署到暂存和生产环境”,所以想提醒他周围的事情。谢谢你纠正我。不过我会记住这点,在回答更多问题时注意。 - VJVRR
关于预发布和生产环境,如果您选择“标准”Web托管计划模式,则可以创建其他部署插槽并在它们之间进行交换。 - Rodolphe
1
@Rodolphe - 很好的发现。在该功能推出之前,我回答了原始问题。我会相应地进行更新。 - David Makogon
显示剩余4条评论

1
David的回答很好地涵盖了云服务选项。然而,我认为Azure网站选项非常适合您的需求。您不必使用Visual Studio进行部署。相反,您可以在Visual Studio中创建一个发布配置文件,该文件创建一个Web Deploy包,它只是一个可以稍后使用命令行工具发布的ZIP文件,无需使用Visual Studio。它还生成一个.deploy.cmd文件,您可以运行该文件以部署到远程服务器,以及一个SetParameters.xml文件,其中包含诸如连接字符串之类的参数,您可以修改目标部署环境。.deploy.cmd文件调用msdeploy.exe执行实际部署。
有关Web Deploy命令行部署的更多详细信息,请参见this。还有大量关于MSDeploy及其包系统的信息在Sayed Ibrahim Hashimi's blog上。

1
如果您想直接在Web应用程序中更改文件,则最好使用Azure Web应用程序,因为您可以通过FTP访问它们。然而,Azure Cloud服务不提供FTP访问,至少没有一个有用的FTP客户端可以上传文件。云服务是您不希望过多烦扰托管Web应用程序细节的地方。虽然Azure Web应用程序做了很多相同的事情,但它还允许您在部署后直接访问文件并进行FTP访问。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接