Azure 我对云服务的部署有点困惑,尤其是是否可以替换代码

Azure 我对云服务的部署有点困惑,尤其是是否可以替换代码,azure,azure-web-roles,Azure,Azure Web Roles,刚刚习惯VS2012发布云服务。目前,我有一个包含MVC3应用程序的单实例webrole。我可以毫无问题地将其发布到Azure,并创建云服务>Web角色>虚拟机。好的需要一点时间 然而,当我做一点代码更改时,如何在不替换实现WebRole等的所有虚拟机的情况下仅迁移此代码更改 代码和基础设施似乎是不可分割的,或者我误解了。有没有办法只更新代码位 谢谢。如果在云服务上启用WebDeploy,则可以使用WebDeploy发布MVC应用程序 有关详细信息,请参阅。云服务中的代码和基础设施实际上是分开的

刚刚习惯VS2012发布云服务。目前,我有一个包含MVC3应用程序的单实例webrole。我可以毫无问题地将其发布到Azure,并创建云服务>Web角色>虚拟机。好的需要一点时间

然而,当我做一点代码更改时,如何在不替换实现WebRole等的所有虚拟机的情况下仅迁移此代码更改

代码和基础设施似乎是不可分割的,或者我误解了。有没有办法只更新代码位


谢谢。

如果在云服务上启用WebDeploy,则可以使用WebDeploy发布MVC应用程序


有关详细信息,请参阅。

云服务中的代码和基础设施实际上是分开的。您上传的只是一个部署包,其中只包含代码和支持库/文件。您不需要上传vhd。Azure为您提供了这一功能,先旋转一个vhd,然后访问该vhd上一个文件夹中的代码。每次扩展到更多实例时,都会发生相同的过程

当您进行代码更改时,您将构建一个新的部署包并部署它。如果将其作为就地更新(vs delete+redeploy)执行,则每个角色都会在每个实例上更新(当您有多个角色实例时,它们不会同时更新)。您甚至可以指定只希望更新部署中的单个角色(例如,如果您在web角色之外还有一个辅助角色,并且希望让所有辅助角色实例都保持运行,那么这将非常有用)


当代码更新发生时,虚拟机不会被替换,但它们会被回收,当它们重新启动时,它们会运行更新的代码。

当您启动更新时,您会上载一个完整的包,其中不仅包含您的代码文件,还包含虚拟机的配置,例如实例的数量、要在防火墙上打开的端口,要分配的本地资源等。这些配置设置是代码包的一部分-因此不仅仅是更新代码文件

但是,有几种方法可用于对更新进行更精细的控制

  • 使用。需要记住的一点是,任何自动服务更新都会将您的网站恢复到最后一个完全部署的包,而该包可能不是最新的。您只希望在暂存中使用此选项,然后对生产卷展栏执行完整的包更新
  • 相反,请使用允许与源代码管理提供程序持续集成并直接更新代码的
  • 改用一个字母。这些基本上与在Azure云中运行您自己的自定义服务器相同,您可以完全控制操作系统。但是,您也有保持操作系统更新和安全的全部责任
  • 您还可以访问Azure Web角色VM。您将在那里找到所有代码文件和IIS,但我不建议您以这种方式更新代码,原因与#1中列出的相同

  • 您可以在使用该项目的多台服务器上使用WebDeploy和云服务(免责声明:我维护它)

    或者,您也可以将优秀的Octopus部署技术与项目结合使用(免责声明:我也维护此技术)


    不过,老实说,如果你只有一个简单的web应用程序,那么我不会同时使用云服务——我只会使用它。尽管如此,请随时查看我的博客文章,了解可能迫使您使用云服务的情况。

    以上所有答案都是正确的,如果您试图更改生产服务的代码,您肯定希望执行所述的就地升级。然而,在开发/测试阶段或故障排除期间,我经常想做一个小的更改并快速测试。要执行此操作,请查看其中描述了如何通过RDP将代码修改到Azure VM。

    这一点不错,但。。。Web部署仅在开发/测试中有用,因为它仅限于单实例。Web部署仅限于单实例的有趣之处感谢。目前我右键点击VS2012中的云项目。出现一个弹出窗口,告诉我云服务正在使用中,我是否要替换它。所以我点击yes,大约10分钟后我就完成了。所以也许我已经在做更新了,或者离更新最近?谢谢,非常全面。所以基本上使用发布。事实上,90%的web应用程序都使用WAWS,我发现它非常优秀。然而,我们有一些需要完全信任的第三方PDF组件,因此它们必须在云服务中运行。@SamJolly:是的。更新Azure服务需要10-15分钟,我感受到了您的痛苦。我个人大量使用Azure Emulator来实现更快的测试周期。此外,我建议您构建网站,使其在Azure和非Azure上都能工作,这样您就可以在进行Azure集成测试之前发布到开发/登台服务器。啊,模拟器。是的,我正在使用它,但我发现MVC代码在模拟器中运行的速度比单独运行要慢得多。好的,模拟器运行得比较慢,但看起来确实很慢,我正在运行一台16GB的I7笔记本电脑。我确实尝试过通过右键单击项目,选择“调试”,然后选择“启动实例”来调试MVC项目,但是这看起来仍然很慢。@SamJolly:即使在调试时,您是否也在使用Azure作为数据库?那会让它变得很慢。如果您想拥有一个测试环境,它应该与Azure完全分离,包括数据库、文件等。我有一台类似的spec计算机(16GB i5-3470),并且我使用emulator在SSD上安装本地SQL Express。我发现它与生产环境相比速度非常快。我已经完成了这两项工作,因此将检查:)但是我从您那里得到的要点是,如果您的设置正确,那么运行模拟器应该非常快,当然