最近需要在一台windows 2008 server r2的机器上安装部署iis + php环境。由于之前基本上没有配置过IIS+php运行环境,这次一边查资料一边学习,特此记录。
?
一、安装iis
这一步就比较简单了,开始 -〉管理工具 -〉服务器管理器 。右键点角色 选择添加角色 。然后根据向导提示选择下一步,接下来选择 Web 服务器 (IIS) 。继续下一步,够选CGI 这一项,然后按照提示继续就安装完成了。
?
二、安装php5.3.8
1.下载php,本文发表时,最新php版本是5.3.8,进入 http://windows.php.net/download/ 页面下载。下载 VC9 x86 Non Thread Safe zip ,下载完成以后解压到C:\php (自己随意)。
2.下载 Microsoft 2008 C++ Runtime (x86) 或 Microsoft 2008 C++ Runtime (x64) ? ,然后安装。
3.然后进入C:\php,复制一份 php.ini-production(或php.ini-development) ,复制好的文件改名为php.ini。
4.编辑php.ini,修改以下几项
fastcgi.impersonate = 1 cgi.fix_pathinfo=1 cgi.force_redirect = 0 extension_dir = "./ext" 或者 extension_dir = "C:/php/ext"
?保存。
5.测试一下php是否可以正常运行。C:\php\php.exe -info
?
三、配置iis
开始 -〉管理工具 -〉Internet 信息服务(IIS)管理器 ,点击左侧的服务器,双击处理程序映射 。右侧的操作菜单选择添加模块映射 ,弹出一个对话框,依次填好
请求路径: *.php 模块: FastCgiModule 可执行文件:C:\php\php-cgi.exe 名称: Php FastCgi Global
点确定,然后继续确定。这样就基本配置完成了。
在wwwroot下建立一个phpinfo.php ,内容为:
<?php phpinfo();
?浏览器打开http://localhost/phpinfo.php,只要出现正常的phpinfo信息就算是成功了
?
四、调整php fastcgi 输出缓冲(responseBufferLimit)
默认值4194304,可以适当调小一点,比如 4096
打开 C:\Windows\System32\inetsrv\config\applicationHost.config
找到 system.webServer 节点下的 handlers 项 找到 <add name="Php FastCgi Global" 这一项。 增加一项属性
responseBufferLimit="4096"
?
五、调整fastcgi的timeout设置
?
1.全局调整
?
打开 C:\Windows\System32\inetsrv\config\applicationHost.config
找到 system.webServer 节点下的 fastCgi 项,修改activityTimeout和requestTimeout
<application fullPath="C:\php\php-cgi.exe" activityTimeout="300" requestTimeout="300">
?
2.站点级别调整
打开 C:\Windows\System32\inetsrv\config\applicationHost.config
找到 system.webServer 节点下的 fastCgi 项
增加一条 application
<application fullPath="C:\php\php-cgi.exe" arguments="longtime" activityTimeout="3000" requestTimeout="3000">
?arguments="longtime"是一个特殊的标示,也可以直接传入php-cgi.exe支持的参数
?
找到 configuration 节点,也就是 applicationHost.config 的根节点
?
插入:
<location path="Default Web Site"> <system.webServer> <handlers> <add name="Php FastCgi Default Web Site" path="*.php" verb="*" modules="FastCgiModule" scriptProcessor="C:\php\php-cgi.exe|longtime" resourceType="Unspecified" requireAccess="Script" responseBufferLimit="4096" /> </handlers> </system.webServer> </location>
location path="Default Web Site" ? 属性值为站点名
add name="Php FastCgi Default Web Site" name不能重复。
scriptProcessor="C:\php\php-cgi.exe|longtime" 管道符号|之前对应于fastCgi ->application 中的fullPath的值,管道符号之后对应 arguments 的值。
responseBufferLimit 这里也需要重新设置。不设置的话就是默认值 4194304。
?
2.文件或者目录级别调整
与站点级别调整差不多,只要location path 改成站点名/路径就行了
比如:
<location path="Default Web Site/download.php">
?
<location path="Default Web Site/download">?
<location path="Default Web Site/download/download.php">
?
六、其他的比如不同的站点使用不同的php.ini设置请参考 http://learn.iis.net/page.aspx/246/using-fastcgi-to-host-php-applications-on-iis-7/
?
?
?
?