Windows 2008 R2系统IIS7.5使用FactCGI运行PHP5.4.x的配置流程
本站上次写了关于2003系统IIS6.0配置PHP和MySQL的流程文章,因微软目前完全放弃最2003的任何类型支持,故大部分生产
环境正在迫切的转移到更新的系统,在Win 2012接受考验时日尚不多时,Win 2008 R2成为大部分Windows服务应用首选的生
产系统环境。本次实验的部署环境如下:
操作系统:Windows 2008 R2 64bit
PHP:5.4.44
MySQL:5.1.72
ZendGuard:5.0
一、IIS 7.5安装
默认全新安装的Windows 2008 R2服务器系统不包含任何角色与应用,此时需要运行服务器管理器中的角色,添加角色来新增IIS web服务。

点击初始页面下一步,找到Web 服务器IIS 并勾选,点击下一步:

按图勾选角色服务内容,点击下一步,如有特殊需求,请按实际需求勾选:

两张图里没有截取到的部分均是未勾选状态

点击下一个界面安装即可,正常安装完毕后,即完成了Web环境的安装。使用服务器本机浏览器打开 http://localhost 即可看到IIS 7.5的欢迎页面。

二、安装软件运行环境
1、下载本次部署中需要用到的运行环境包并双击安装。
2、如使用的是2008系统,非R2系统时,需要另行安装.NET Framework 4或4.5.x、4.6.x环境包之一。
三、安装PHP
1、下载本次部署中需要用到的PHP 5.4.44软件包,官方下载地址。本例中我们使用FastCGI方式运行php,故使用NTS非安全线程的PHP版本。
2、解压PHP程序文件到D:\Program Files\PHP,如下图般目录结构:

3、下载
ZendGuardLoader-70429-PHP-5.4-Windows-x86.zip,解压其中的ZendLoader.dll到D:\Program Files\PHP\ext目录下。
4、下载并解压本文用到的范例配置文件
phpini.zip放到D:\Program Files\PHP目录下,本配置文件可用于生产环境使用,默认开启了一些必备的扩展模块,程序性能参数请按照自身服务器硬件规格进行调整。本配置文件中的一些目录路径均以D:\Program Files\PHP为基准,如你的PHP没有安装在这个目录下,请查找替换。本配置文件中,已经将Zend扩展模块的启用代码加在最后几行,请根据自身需求修改。
四、调整IIS 7.5适配PHP
1、打开服务器管理器,选中角色-Web服务器-Internet信息服务模块,右侧双击处理程序映射功能:

在打开的功能页右侧点击添加模块映射,按下图内容填写:

确定并保存,在弹出的询问框中选择是 - 将此项添加到FastCGI集合中。
2、在角色-Web服务器-Internet信息服务模块中,选中服务器名,双击打开右侧FastCGI设置:

编辑如下图显示的刚才添加的FastCGI条目:

修改参数:
监视对文件所做的更改,将路径定义到PHP目录下的php.ini,在本例中即:

修改环境变量,添加一个参数PHP_FCGI_MAX_REQUESTS并定义默认值为10000:

确定保存,并关闭所有设置窗口。
五、安装MySQL
1、下载MySQL 5.1.72,如有需求也可安装5.5.x至5.6.x版本,本文以5.1.x为范例。官网下载地址。
2、运行安装包安装程序,下一步后选择自定义安装模式,建议更改安装地址为非C盘,如D:\Program Files\MySQL\MySQL Server 5.1\

点击Install开始安装。安装后,运行初始配置向导:

选择自定配置模式:

默认我们选择Server Machine,即生产环境。也可以按照要求选择第一项开发环境或最后一项专用数据库服务器,注意如果选最后一项,MySQL会使用大型数据库默认配置文件,尽可能利用当前服务器的所有资源用于数据库服务。

默认选择仅用InnoDB数据库运行,如有MyISAM库需求的请选择第二项:

接下来指定数据文件存放的目录,默认是程序安装目录,这里建议自定义数据库目录到根目录方便日后维护:

下一步选择该数据库服务设计承受的并发连接数,这里我们选第二项,最大500个并发,按照实际要求,请选第三项并输入一个期望的值。

下一步,可以更改默认的MySQL端口,本文中我们使用默认的3306端口,如果没有外部硬件防火墙,请勾选Add firewall exception for this port:

下一步,单字节码地区如欧美使用第一项字符集,东亚地区双字节比如中日韩使用第二项UTF-8编码,如有特殊需求请选第三项自定义字符集:

下一步配置服务名,由于服务器上只有一个MySQL服务,这里我们使用默认服务名,如有特殊需求请自行修改:

下一步为root用户设置一个密码,不建议勾选enable root access from remote machines,如的确有远程连接需求建议另建用户并赋予尽可能小范围的权限;

点击Execute开始部署,部署完毕后即可使用。
至此,环境安装完毕。
==============================================================
在IIS7.5上,为了显示出FastCGI运行环境下PHP的错误代码内容以供开发人员调试,需要作出如下步骤:
1、编辑php.ini,查找display_errors,默认值为Off,改为On后保存
2、新建如下内容的文件,保存为web.config,存放在网站根目录下。
<?xml version="1.0" encoding="UTF-8"?> <!-- For more information on how to configure your ASP.NET application, please visit http://go.microsoft.com/fwlink/?LinkId=169433 --> <configuration> <system.web> <compilation debug="true" targetFramework="4.5"/> <httpRuntime targetFramework="4.5"/> </system.web> <system.webServer> <httpErrors errorMode="DetailedLocalOnly" existingResponse="PassThrough"></httpErrors> </system.webServer> </configuration>
此时,再刷新出错的PHP页面,原先的IIS7.5显示的500内部服务器错误将被更详细的PHP错误信息取代。如页面无任何输出,可能是php.ini中open_basedir选项开启,但没有指定session.tmp,建议注释掉open_basedir再测试。