基本问题Azure如何在Web部署期间将ASP.NET网站的文件复制到网站的所有实例?
我们可以只使用网站部署zip包和一个基于PowerShell脚本的Azure Web作业(触发一个),它将执行以下操作:
如果可能,通过这种方式我们可以获得优势:
我们在部署期间向Azure网站发送较少的字节数(网站 源代码可以很好地压缩)因此部署过程需要 甚至是大型网站的秒数
真正的部署工作是通过触发的Web作业完成的 部署过程异步。我们可以从同一个地运行许多部署 构建机器,然后只监控流程
我们已成功应用此方法来部署Azure Web Jobs。我们有10个具有几乎相同依赖关系的Web作业,并且部署相同的东西10次(50MB * 10)需要太多时间。但在这种情况下,托管此Web作业的Azure Web App就是一个实例。
对于多实例网络应用,情况会有所不同吗?
答案 0 :(得分:2)
在Web部署期间,Azure如何将ASP.NET网站的文件复制到网站的所有实例?
Azure网络应用内容存储在Azure存储中,并以耐用的方式作为内容共享浮出水面。对于每个实例,沙箱在内核模式下实现动态符号链接,将 d:\ home 映射到Web应用程序内容主目录。无论部署Web应用程序的实例数是多少,每个实例都可以使用“d:\ home”访问其主目录。因此,默认情况下,Azure Web App不会将网站的文件复制到每个VM实例。
您还可以通过在应用服务的应用设置中将“WEBSITE_LOCAL_CACHE_OPTION”属性设置为“始终”来启用本地缓存。之后,Azure Web App会将共享内容的/ site和/ siteextensions文件夹复制到Web应用程序启动时的每个本地VM实例。 'd:\ home'路径将指向本地缓存。如果重新启动Web应用程序,Azure Web App会将共享内容重新复制到每个本地VM实例。
对于多实例网络应用,情况会有所不同吗?
如果您尚未打开本地缓存,则多实例Web应用程序的情况将相同。如果您确实打开了本地缓存,则需要重新启动Web App,以便在部署任何内容后将更改应用于每个实例。
答案 1 :(得分:1)
App服务正在使用网络共享来映射源文件夹。因此,内容的更改将应用于所有实例。 使用LocalCache时有例外 - 在这种情况下,需要显式网络应用程序重新启动才能使更改生效