在 azure webroles 上修补网站
patching website on azure webroles
有时在我们部署在 Azure Web 角色上的网站中,问题与 javascript 和 HTML 中的小错误有关。我们转到所有 webroles 实例并在机器上修复这些 JS 和 HTML 文件。
但我正在寻找一些自动化的方法来执行此操作,从某个中央位置下载要修补的文件并替换所有 Azure Web 角色中的文件。我正在为网站使用 ASP .net MVC。
可以使用包中的补丁重新部署网站,但我们不想等待很长的部署时间。请让我知道是否可以通过一些内部 WEB API 替换所有 Azure Web 角色上的内容。
云服务部署包往往很慢,因为它们基本上是关于如何构建和配置部署的方法。部署不仅将配方放在 Azure 中(因此如果需要移动您的机器可以再次使用它),还会按照配方为您的云服务构建 VM(WebRoles/WorkerRoles 是平台作为服务,因此您不必像使用虚拟机 Azure 产品时那样担心 OS 和基础架构级别,但它们仍然 运行 在物理硬件上的虚拟机中)。
你想要做的是更新配方(你的云服务包)和你的部署,在它已经 运行ning 之后......没有简单的方法可以做到这一点在云服务中。
但是,是的,您可以创建一个启动脚本,该脚本可以从 blob 存储或其他某个集中位置提取站点文件 - 这与应用程序(例如 fiddler)查找更新然后知道如何更新和替换的方式相比他们自己。对于此类功能,您可能需要 运行 作为高级用户进行编码 - 启动脚本的一个好处是它们可以 运行 作为高级用户 - 因此他们可以做任何你需要做的事情一台机器(但需要您为它们重新启动实例到 运行)。基本上,您需要编写一些代码来让您的网站自行更新。这 link 可能会有所帮助:https://azure.microsoft.com/en-us/documentation/articles/cloud-services-startup-tasks/
如果您有能力迁移到 WebApps 和 WebJobs,我建议您研究一下,因为该计算产品可以很好地解决您的问题。
以下是 WebApps 和云服务之间差异的有用答案:What is the difference between an Azure Web Site and an Azure Web Role
有两种部署新 webrole 的方法:
- 重新部署
- 就地更新
第一个是最慢的,这意味着启动了新的 VM。
就地升级 (https://azure.microsoft.com/en-us/documentation/articles/cloud-services-update-azure-service/)
将新的应用程序包挂载到新的驱动器上(通常是F:而不是E:),IIS网站也切换到新的驱动器上。
您可以通过转到旧门户并上传新的应用程序包来尝试此操作。短短 seconds/minutes 更新完成。
在 Whosebug 上挖掘了很多东西之后,我制定了自己的解决方案,即在网站启动时创建一个主题并在代码中订阅该主题。当我想要修补网络应用程序时,我会向主题发送一条消息以开始修补,然后网络角色中的每台机器都会收到来自主题的通知并开始自己修补。修补本身非常简单,就是去网络存储并从那里下载文件并替换 approot 中的文件。
当 azure 维护发生时,这个补丁可能会消失,所以对于这种情况,我也在网站启动时开始了补丁工作。
有时在我们部署在 Azure Web 角色上的网站中,问题与 javascript 和 HTML 中的小错误有关。我们转到所有 webroles 实例并在机器上修复这些 JS 和 HTML 文件。
但我正在寻找一些自动化的方法来执行此操作,从某个中央位置下载要修补的文件并替换所有 Azure Web 角色中的文件。我正在为网站使用 ASP .net MVC。
可以使用包中的补丁重新部署网站,但我们不想等待很长的部署时间。请让我知道是否可以通过一些内部 WEB API 替换所有 Azure Web 角色上的内容。
云服务部署包往往很慢,因为它们基本上是关于如何构建和配置部署的方法。部署不仅将配方放在 Azure 中(因此如果需要移动您的机器可以再次使用它),还会按照配方为您的云服务构建 VM(WebRoles/WorkerRoles 是平台作为服务,因此您不必像使用虚拟机 Azure 产品时那样担心 OS 和基础架构级别,但它们仍然 运行 在物理硬件上的虚拟机中)。
你想要做的是更新配方(你的云服务包)和你的部署,在它已经 运行ning 之后......没有简单的方法可以做到这一点在云服务中。
但是,是的,您可以创建一个启动脚本,该脚本可以从 blob 存储或其他某个集中位置提取站点文件 - 这与应用程序(例如 fiddler)查找更新然后知道如何更新和替换的方式相比他们自己。对于此类功能,您可能需要 运行 作为高级用户进行编码 - 启动脚本的一个好处是它们可以 运行 作为高级用户 - 因此他们可以做任何你需要做的事情一台机器(但需要您为它们重新启动实例到 运行)。基本上,您需要编写一些代码来让您的网站自行更新。这 link 可能会有所帮助:https://azure.microsoft.com/en-us/documentation/articles/cloud-services-startup-tasks/
如果您有能力迁移到 WebApps 和 WebJobs,我建议您研究一下,因为该计算产品可以很好地解决您的问题。 以下是 WebApps 和云服务之间差异的有用答案:What is the difference between an Azure Web Site and an Azure Web Role
有两种部署新 webrole 的方法:
- 重新部署
- 就地更新
第一个是最慢的,这意味着启动了新的 VM。
就地升级 (https://azure.microsoft.com/en-us/documentation/articles/cloud-services-update-azure-service/) 将新的应用程序包挂载到新的驱动器上(通常是F:而不是E:),IIS网站也切换到新的驱动器上。
您可以通过转到旧门户并上传新的应用程序包来尝试此操作。短短 seconds/minutes 更新完成。
在 Whosebug 上挖掘了很多东西之后,我制定了自己的解决方案,即在网站启动时创建一个主题并在代码中订阅该主题。当我想要修补网络应用程序时,我会向主题发送一条消息以开始修补,然后网络角色中的每台机器都会收到来自主题的通知并开始自己修补。修补本身非常简单,就是去网络存储并从那里下载文件并替换 approot 中的文件。 当 azure 维护发生时,这个补丁可能会消失,所以对于这种情况,我也在网站启动时开始了补丁工作。