将Web站点部署到云服务的最佳实践

时间:2013-03-05 13:42:54

标签: azure cloud azure-web-roles

在Cloud Service上部署多个网站的最佳做法是什么?

我有三个网站,是否可以将这三个网站部署到一个Cloud Service中? (一个Cloud Service中的三个实例)

或者我是否必须创建三个云服务并逐步部署每个网站?

谢谢

我的ServiceDefinition文件:

  <WebRole name="WebRoleName" vmsize="ExtraSmall">
    <Sites>
      <Site name="Web" physicalDirectory="../WebSite1">
        <Bindings>
          <Binding name="Endpoint1" endpointName="Endpoint1" />
        </Bindings>
      </Site>
      <Site name="Web2" physicalDirectory="..\..\..\WebSite2">
        <Bindings>
          <Binding name="Endpoint2" endpointName="Endpoint2" />
        </Bindings>
      </Site>
    </Sites>
    <Endpoints>
      <InputEndpoint name="Endpoint1" protocol="http" port="80" />
      <InputEndpoint name="Endpoint2" protocol="http" port="81" />
    </Endpoints>
    <Imports>
      <Import moduleName="Diagnostics" />
      <Import moduleName="RemoteAccess" />
      <Import moduleName="RemoteForwarder" />
    </Imports>
  </WebRole>
</ServiceDefinition>

通过使用该代码,WebSite1可用,WebSite2不可用,即使添加:81 我使用远程桌面验证IIS上的部署,我看到WebSite1已正确部署但WebSite2未正确部署。 WebSite2和WebSite2.Test是部署在虚拟网站目录下的两个文件夹。 通过手动复制WebSite2文件夹的内容,在Virtual WebSite目录下,我可以通过http://ID.cloudapp.net:81

访问我的网站

错误是什么?为什么还为WebSite2部署了测试项目? (我检查了依赖性并且未选中)

谢谢

2 个答案:

答案 0 :(得分:2)

你可以做任何一种方式。这真的取决于你需要做什么。如果您想在端口80上托管所有网站,例如:

http://www.mywebsite.com/site1
http://www.mywebsite.com/site2
http://www.mywebsite.com/site3

然后你可以试试这个:

http://kellyhpdx.wordpress.com/2012/04/11/deploying-multiple-web-applications-to-a-single-azure-instance-and-applying-web-config-transforms-correctly/

或者,如果您不一定需要此实现,并且可以在不同的端口下托管您的网站,那么您可以在单独的角色下创建一个实例。

每个webrole甚至可以有一个云项目,例如,如果你想拥有一个测试管理网站来控制你的项目,这个项目不应该包含在生产中,你可以拥有2个云项目:1个所有的生产项目实例和1与您的测试管理网站,您需要时部署。

答案 1 :(得分:0)

您必须手动修改Azure项目的.csdef文件,才能将多个站点添加到云服务中。 Wade Wegner posted a good article on how to do so。请注意,每个站点都必须具有唯一的主机头。