如何在Windows Azure相同的Web Role上同时部署PHP和ASPNET的网站?今天在与大家分享方法之前请大家先安装Windows AzureVisual Studio 以及Windows Azure平台上的NET SDK也许可以在不安装Visual Studio的前提下也可能同时部署两个网站但至少我现在还没有发现这个方法
这个视频讲述的是如何部署多个NET网站但是它包含了你需要部署各种网站的所有信息
然后在部署应用之前你可以做些基础工作首先在Windows Azure平台上为你的ASPNET网站的域名创建一个空的托管服务(如)然后为PHP网站创建一个CNAME域名记录()用于指向Azure域名()(这里我假设大家有一个域名类似)这些步骤做完后一切就越来越清晰了
在Visual Studio中创建一个Windows Azure项目会提示添加Web Role选择任意一个ASPNET Web Role(我选择的是ASPNET MVC Web Role)以下步骤通过点击OK默认设置即可完成
打开服务定义文件(ServiceDefinitioncsdef)添加类似于下面的元素
<Site name=YourSiteName physicalDirectory=path\to\your\PHP\app>
<Bindings>
<Binding name=Endpoint endpointName=EndpointhostHeader= />
</Bindings>
</Site>
你需要添加namephysicalDirectory以及hostHeader属性值Name属性不作特别要求但是physicalDirectory属性必须指向你本地的PHP应用程序hostHeader值应该是PHP应用程序的域名
打开服务定义文件后在元素后新增以下的元素
<Startup>
<Task commandLine=addenvironmentvariablescmdexecutionContext=elevated taskType=simple />
<Task commandLine=installphpcmd executionContext=elevatedtaskType=simple >
<Environment>
<Variable name=EMULATED>
<RoleInstanceValue xpath=/RoleEnvironment/Deployment/@emulated/>
</Variable>
</Environment>
</Task>
<Task commandLine=monitorenvironmentcmdexecutionContext=elevated taskType=background />
</Startup>
当你部署应用程序的时候启动任务会开始安装PHP并且完成IIS的配置来处理PHP的响应要求
将startup 任务中参考的文件添加至ASPNET项目一旦完成后目录如下图
如果你想要使用Compute 和Storage模拟器来运行你的应用程序你需要编辑yourhosts 文件(你可以通过点击StartRun键入drivershosts文件会在etc目录下)载hosts文件中添加以下代码
按住Ctrl+F(或者选择Start Without Debugging)在模拟器中运行你的应用程序