PHP也许是当前web开发界最最流行的语言,所以“在Azure中使用PHP”这个问题引起了很多人的关注,流牛木马本人在最近两天也收到了好几个朋友的焦急求助。
也许是微软的那些牛人们最近在忙MIX09的缘故,提及Azure支持"FastCGI”的新闻报道很多,而却几乎没有提及具体怎样在Azure里配置使用PHP。就连在新版的Azure SDK里面,关于FastCGI的sample也不是使用php的。
不用着急,在本篇中,流牛木马将会演示在Azure中使用PHP的最详细流程。
(已部署到云端的Demo: http://ibm.cloudapp.net/php.php )
第一步,你必须知道的一些有关PHP&FastCGI的基本知识。
FastCGI的官方网站:http://www.fastcgi.com/
PHP的FastCGI模式:http://www.blogme.cn/node/6529
第二步,启用你IIS7中的FastCGI模块。
【注:本地调试环境需要。如果你打算直接部署到Cloud上,则不需要这一步。】
(下面以Vista Ultimate中文版为例:)
- 打开控制面板,进入”打开或关闭Windows 功能”

- 启用以下模块(图中红框的部分)

- 下载安装最新的FastCGI模块:http://support.microsoft.com/kb/967131
第三步,下载一个"xcopy-deployable”版本的PHP。
"xcopy-deployable”这个词来自微软的官方文档,但是很遗憾,在php的官方网站http://php.net/中,我们却没有找到这个词. - -P
根据词义理解一下:可以直接拷贝部署的PHP版本。通俗地说就是不需要安装的。
来到PHP官方网站的下载中心:http://www.php.net/downloads.php,在Windows Binaries部分找到最新版本号的"zip package“就可以了。比如现在php版本的最新版本是2009年3月10日的5.2.9-1,下载地址:http://cn2.php.net/get/php-5.2.9-1-Win32.zip/from/a/mirror
第四步,新建Web Cloud Service项目。
第五步,配置Service Definition 文件(ServiceDefinition.csdef)。
<?
xml version="1.0" encoding="utf-8"
?>
<
ServiceDefinition
name
="CloudService1"
xmlns
="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition"
>
<
WebRole
name
="WebRole"
enableNativeCodeExecution
="true">
<
InputEndpoints
>
<
InputEndpoint
name
="HttpIn"
protocol
="http"
port
="80"
/>
</
InputEndpoints
>
</
WebRole
>
</
ServiceDefinition
>
注意:需要在WebRole节点下增加enableNativeCodeExecution="true"属性
第六步:配置FastCGI和PHP
- 将刚刚下载的xcopy-deployable PHP压缩包解压缩到WebRole项目的php子目录下。

- 在WebRole项目根目录下增加Web.roleconfig文件,内容如下:
<?
xml version="1.0" encoding="utf-8"
?>
<
configuration
>
<
system.webServer
>
<
fastCgi
>
<
application
fullPath
="%RoleRoot%\php\php-cgi.exe"
/>
</
fastCgi
>
</
system.webServer
>
</
configuration
>
这里我们使用了"%RoleRoot%"变量来获得Web Role的根目录。这也是Match 2009 CTP版本所提供的新特性之一。 - 在Web.config文件的system.webServer-handlers节下增加对PHP文件的处理:
<
system.webServer
>
<
handlers
>
<
..
>
<
add
name
="PHP via FastCGI"
path
="*.php"
verb
="*"
modules
="FastCgiModule"
scriptProcessor
="%RoleRoot%\php\php-cgi.exe"
resourceType
="Unspecified"
/>
</
handlers
>
</
system.webServer
>
第七步:写一些简单的代码测试一下吧!
代码:
<?
php
$iipp
=
$_SERVER
[
"
REMOTE_ADDR
"
];
echo
"
你的IP地址是
"
.
$iipp
.
"
<br />
"
;
echo
"
这是用PHP的echo命令输出的文字。<br />
"
;
echo
"
<h1><font color='Red'><b>Hello PHP on Azure!</b></font></h1><br />
"
;
echo
"
<a href='http://azure.cnblogs.com/'>流牛木马的Azure博客</a><br />
"
;
echo
"
<font color='Blue'>以下是当前PHP环境的系统变量:</font><br />
"
;
phpinfo
();
?>
本文转自 流牛木马 博客园博客,原文链接:http://www.cnblogs.com/azure/archive/2009/03/20/1417885.html,如需转载请自行联系原作者


