(请注意,我专门使用新的" blade" Azure门户并使用新术语,因此请避免使用像#34; Azure网站这样的字词,因为它们不适用于此处)。
在Portal中我创建了两个Azure应用服务," foo-production"和" foo-staging" - 两者都存在于同一订阅和资源组中,并共享相同的应用服务计划。这些应用服务代表了简单的ASP.NET Web应用程序的生产和登台部署,该应用程序作为普通网站运行。
应用服务计划是"基本:1小"。
我的理解是,当您将Azure应用服务与基本或更高版本的应用服务计划结合使用时,该计划代表了一个我能够托管尽可能多的IIS网站的虚拟机 - 这些IIS网站是在Azure中表示为Azure App Services。
鉴于此,当我访问Kudu(https://yourwebsite.scm.azurewebsites.net/DebugConsole)中VM的文件系统时,我会假设我能够在一些公共根目录下看到每个网站的文件。
但是,当我访问foo-production
网站的Kudu控制台时,我发现其文件位于D:\home\site\wwwroot
,并且找不到foo-staging
的文件。
如果我正确理解这一点,那就意味着Azure实际上只为每个网站创建了一个全新的虚拟机,并且网站无法共享文件系统 - 而且我无法拥有更高级的Azure管理的IIS配置 - 我和#39;必须创建我自己的自我管理的Windows Server VM。
我可以理解每个网站单独的VM背后的动机,这看起来很浪费 - Windows Server每个VM至少需要1 GB的内存,但我的网站主要只是静态文件(但我不能这样做)使用Shared
应用服务计划,因为我需要一些更高级的功能)。那对微软来说是不经济的。
如何在Azure托管环境中拥有多个Azure App Services共享同一个VM?或者我错误地想到了它?
为了避免X / Y问题:我将说明我主要关心的是文件的持久性。我部署的Web应用程序将上传的文件存储到webroot的子目录中,这些文件应永久存在。有一些含糊不清的信息:有些人建议网站(及其所有文件)被主动销毁和回收,并且应该使用Azure存储Blob。我想使用Azure文件共享,不幸的是我在使用ACCESS_DENIED
时出现WNetAddConnection2
错误,而且有些用户报告说无法在Azure应用服务中使用Azure文件共享 - 尽管我找不到任何权威的Microsoft关于这个。
答案 0 :(得分:8)
如果它们位于相同的应用服务计划中,则它们在同一个VM中运行。尝试在Kudu控制台中为每个键入hostname
,您将看到相同的计算机名称。
但请注意,它们每个都在不同的沙箱中运行,这会阻止它们看到彼此的文件。像d:\home
这样的文件夹是虚拟化的,实际上指向网络共享。所以你不能用它来得出关于机器是否相同的结论。
答案 1 :(得分:6)
当我回答here时,计划中的所有应用服务都在同一组VM中运行,共享所有计算资源。
您假设计划中的每个应用服务与所有其他应用服务共享文件。这是不正确的:每个应用服务都有自己的一组文件,每个应用服务都在d:\home
。如果您需要共享文件,则需要使用App Services外部的内容,例如Azure文件服务(SMB共享)。 Azure文件服务与基于每个应用程序服务为您创建的空间分开。
答案 2 :(得分:3)
Azure" App Service"类似于"容器" (Docker术语)。虽然它在VM上基于 ,但它比VM本身的重量更轻。例如,你不能将RDP加入其中。
Azure" VM"是一个成熟的虚拟机。操作系统可以是Windows,也可以是几种不同版本的Linux。
您可以在此处获取更多信息:
这是一篇很好的文章,比较了网站(应用服务的一个例子),云服务和虚拟机:
http://www.c-sharpcorner.com/UploadFile/42ddd2/azure-websites-vs-cloud-service-vs-virtual-machines/
Azure网站
Azure网站几乎没有责任完成,并且 相对较少的控制。它是大多数Web应用程序的最佳选择。 部署和管理直接集成到我们的平台中 得到。
Azure云服务
如果您想要更多,可能需要使用类似Web服务器的环境 使用Azure云服务。您可以远程访问您的云服务 配置启动任务。云服务为您提供更多便利 管理和敏捷性比Azure网站
Azure虚拟机
为您提供丰富的功能;但是,正确配置, 保护和维护VM需要更多的时间和更多的IT 与Azure云服务和Azure网站相比的专业知识。