上一篇博客介绍了如何将PHP应用发布到Azure website上。Website使用很方便,但有的时候,我们希望获得更多的灵活性,比如需要特别的PHP插件、需要不同的PHP版本,或者需要运行其他进程,甚至希望登录到目标虚拟机上去。这时,可以采用Cloud service来运行PHP应用。Cloud service是一组被Azure管理的虚拟机,上面运行了windows操作系统,并且加载了IIS和PHP运行环境,可以支持ASP和PHP的运行。PHP发布到Website时,用FTP把代码上传即可。采用Cloud service时,上传过程稍微不同。上传时需要使用Azure工具进行打包。下面看下具体步骤。

该工具只能运行在Windows下。从这里下载安装Windows Azure SDK for PHP。该工具包括了一个本地的Azure模拟器和Power shell工具。安装完毕后,在开始菜单中找到Windows Azure PowerShell程序,以管理员身份运行

接下来就可以进行发布了。首先要为该PHP应用生成一个对应的Cloud service应用

PS C:\>New-AzureServiceProject myProject 

该操作会在C:\下生成一个目录,包含了该服务的基本文件,如服务定义ServiceDefinition.csdef和服务配置信息ServiceConfiguration.Cloud.cscfg。他们定义了该服务由几个角色构成,每个角色有几个虚拟机,以及各种变量信息等。任何一个cloud
service都由一个或者若干个角色(Role)构成。一个Role代表了功能相同的一组虚拟机。比如,一个PHP站点有前段Web页面和后端一个批处理程序构成,那么我们可以定义两个role,分别是WebRole和WorkerRole

接下来可以生成一个角色

PS C:\myProject> Add-AzurePHPWebRole MyWebRole 

该操作会在当前目录下生成一个目录容纳该角色包含的文件,新生成时里面只有index.php和一个bin目录。其中index.php是显示当前PHP环境信息。bin目录是Azure进行系统配置所需的一些脚本,我们可以不用管它。我们可以把已有的PHP应用代码拷贝到角色目录(C:\myProject\MyWebRole)下

在上传应用到Azure前,我门可以在本地先测试。在本地启动模拟器

PS C:\MyProject>Start-AzureEmulator 

可以看到下面的输出:

Creating local package... 

Starting Emulator... 

Role is running at http://127.0.0.1:81 

Started 

然后打开浏览器访问上面给出的地址即可进行测试。下面的命令可以结束调试

PS C:\MyProject> Stop-AzureEmulator 

测试完成后,开始最终发布。发布时我们要先和Azure订阅关联。执行如下命令:

PS C:\MyProject>Get-AzurePublishSettingsFile 

该操作会打开一个浏览器,并提示登录Azure。输入登录信息后,系统会弹出一个下载对话框。把文件下载到本地。

该文件是Azure订阅信息。下面导入该订阅信息:

PS C:\MyProject>Import-AzurePublishSettingsFile C:\Users\MyAccount\Downloads\****-credentials.publishsettings 

最后,执行发布命令。其中ServiceName是服务名,该名称将组成服务URL的前缀,Location是发布的数据中心

PS C:\MyProject> New-AzureServiceProject -ServiceName MyService <span class="pun">-

</span><span class="typ">Location</span><span class="pln"> </span><span class="str">"Southeast Asia"</span>

 发布完成后,登录Azure管理门户,在Cloud service下可以找到新创建的服务。进入后可以查看其Dashboard。点击右侧的Site URL即可访问该服务

下面是结果

接下来我们可以对该Cloudservice进行管理,比如扩容、监控、修改配置等,可以参考http://www.windowsazure.com/en-us/manage/services/cloud-services/

这里并没有讨论如何发布数据库,可以参考http://blog.csdn.net/shaunfang/article/details/8555574

 

目前缺省的PHP版本是5.3,如果我们希望变更PHP版本,或者自定义PHP运行环境,可以参考http://www.windowsazure.com/en-us/develop/php/common-tasks/create-web-and-worker-roles/#CreateProject

而更多Powershell命令,可以参考http://www.windowsazure.com/en-us/develop/php/how-to-guides/powershell-cmdlets/#ImportPubSettings

本文转载自:http://blog.csdn.net/shaunfang/article/details/8558219