基本问题Azure如何在Web部署期间将ASP.NET网站的文件复制到站点的所有实例?
我们可以部署只有zip站点的网站和一个基于PowerShell脚本的Azure Web作业(触发一个),它将执行以下操作:
-
解压缩包
-
在Azure服务器上复制到/ site / wwwroot /
?
如果可能,通过这种方式,我们可以获得优势:
-
我们在部署期间向Azure网站发送较少的字节(网站源可以很好地压缩),因此即使是大型网站,部署过程也需要几秒钟
-
实际部署工作由触发的Web作业完成,这使部署过程异步 . 我们可以从同一个构建机器运行许多部署,然后只监视进程
我们已成功应用此方法来部署Azure Web作业 . 我们有10个具有几乎相同依赖关系的Web作业,并且部署相同的东西10次(50MB * 10)需要太多时间 . 但在这种情况下,承载此Web作业的Azure Web App是一个实例 .
那么多实例Web应用程序的情况会有所不同吗?
2 回答
Azure Web应用程序内容存储在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 App,Azure Web App会将共享内容重新复制到每个本地VM实例 .
如果您尚未打开本地缓存,则多实例Web应用程序的情况将相同 . 如果您确实打开了本地缓存,则需要重新启动Web App,以便在部署任何内容后将更改应用于每个实例 .
应用服务正在使用网络共享来映射源文件夹 . 因此,内容的更改将应用于所有实例 . 使用LocalCache时有例外 - 在这种情况下,需要显式Web应用程序重新启动才能使更改生效