将网站部署为azure作为包

时间:2013-10-15 09:04:26

标签: c# azure web-deployment azure-web-sites

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

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

有关如何create a service package发布云服务的大量信息,但有关将网站发布到azure的文章遵循'Web部署'方案,其中部署是通过Visual Studio完成的(Azure的订阅文件)等)。

有没有办法将网站部署为azure作为包?或者是Web部署所需的Visual Studio工具?如果是这样,那么将项目组合为云服务,只有Web角色才是正确的选择?

3 个答案:

答案 0 :(得分:4)

我在这个问题上发表了一条评论,关于Cloud Service&网站,但要回答有关包装的问题:云服务&网站采用两种不同的部署方法,并没有真正“适用于两种”包装:

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

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

您无法将部署包推送到网站。

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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

但是,Azure Cloud Service不提供FTP访问,至少不允许您使用FTP客户端上传文件。云服务是您不希望因托管Web应用程序的大部分细节而烦恼的地方。虽然Azure Web App做了很多相同的事情,但它也允许您在部署后拥有FTP访问权限并直接访问文件。