0

如何更改默认的 approot 路径?例如,我想运行一个 Web 根目录为子文件夹的 PHP 框架:

  symfony
  |_ app
  |_ bin
  |_ src
  |_ web <- Web root
      |_ index.php

WebRole 的网络根目录在那里:

WebRole <- Web root
 |_ bin
 |_ php
 |_ resources
 |_ WindowsAzureSDKForPHP
 |_ diagnostics.wadcfg
 |_ Global.asax
 |_ Web.config
 |_ index.php
ServiceConfiguration.cscfg
ServiceDefinition.csdef

当把两者放在一起时,我得到:

WebRole
 |_ bin
 |_ php
 |_ resources
 |_ WindowsAzureSDKForPHP
 |_ diagnostics.wadcfg
 |_ Global.asax
 |_ Web.config
 |_ symfony
      |_ app
      |_ bin
      |_ src
      |_ web <- Desired web root
          |_ index.php      
ServiceConfiguration.cscfg
ServiceDefinition.csdef

有没有办法告诉 Windows Azure web root 已经改变了?(Web.config 中的 defaultDocument-setting 是不够的)。

编辑:

在 astaykov 的建议更改之后,结构如下所示:

WebRole
 |_ ServiceConfiguration.cscfg
 |_ ServiceDefinition.csdef
 |_ symfony
      |_ app
      |_ bin
      |_ src
      |_ web <- Desired web root
         |_ bin
         |_ php
         |_ resources
         |_ WindowsAzureSDKForPHP
         |_ diagnostics.wadcfg
         |_ Global.asax
         |_ Web.config
         |_ index.php      
4

1 回答 1

0

您可以尝试将其添加为另一个站点。例如,将以下站点节点添加到您的服务定义站点元素:

 <Site name="symphony" physicalDirectory="../WebRole1/symphony/web">
        <Bindings>
          <Binding name="Endpoint1" endpointName="Endpoint1" hostHeader="www.symphony.com" />
        </Bindings>
  </Site>

您需要将“Endpoint1”和“www.symphony.com”替换为您的实际端点名称和主机头。我在本地对其进行了测试,并且可以正常工作(我使用常规的 html 文件进行了测试,但是使用 php 并没有太大的不同)。

更新 这里是部署的样本:

http://sn.cloudapp.net/

http://symphony.staykov.net/

请注意,symphony.staykov.net 只是 sn.cloudapp.net 的 CNAME。

但是,部署后,两个站点都将驻留在各自的 e:\sitesroot 子文件夹中。不知道会不会是你的问题。您如何在您的网络中包含交响乐文件?即 require_once('../symphony/something.php') ?这真的行不通...

我将在今天晚些时候或明天上传示例脚手架解决方案并提供链接。

更新 2 - 来源

您可以在此处查看脚手架源代码和此处实际部署包以开始试验。希望它能给你一些关于如何解决你的问题的想法。

于 2012-01-19T12:50:32.813 回答