日期:2014-05-16  浏览次数:21194 次

服务器环境搭建系列 II - PHP在IIS6.0中部署

场景


需要在客户服务器上进行项目部署实施:
  • 客户提供的服务器只有Windows平台;
  • 客户可提供的二级域名有限,或无法提供二级域名;
  • 服务器所在网络监管很严格,一般只开放80服务端口(如需开放其他端口则需要较长审批流程),无法通过VPN或FTP方式进行后期系统维护;
客户服务器环境为:
  • Windows 2003
  • IIS 6.0(.Net Frameworks 2.0+)
项目部署环境要求:
  • PHP 5.3.13
  • MySQL
  • 微博(记事狗)
  • 论坛(Discuz!)
解决方案

1.准备工作

? ? A. 通过Google搜索解决方案(得出参考文献如后面所列)。
  • 2种可选方案 - ISAPI和FastCGI;
  • 最终选择FastCGI - 由于文章中指出“ISAPI方式稳定性不佳,经常会导致整个Web Server Crash,所以微软特别针对IIS开发了FastCGI模组(IIS7已内建),据说效能及稳定性都有较大改善”。
? ? B. 在本地搭建模拟部署实施环境 - IIS上搭建项目部署所需环境准备工作如下:
  • 下载 PHP 包( 使用?php-5.3.13-Win32-VC9-x86.zip 线程安全版?) - 最好安装于非系统盘,与项目系统处于同一文件夹且需是英文目录路径(暂时不考虑IO问题)。
  • 下载 FastCGI for IIS 包并安装 - 默认安装于 %windir%\system32\inetsrv 目录下,包含fcgiext.dll、fcgiext.ini、fcgiconfig.js等几个文件。
2.模拟环境搭建

????按照参考文章中所列,逐步修改相关配置。开始确实摸不着头脑,实际上这几个 ini 配置文件中对于其中配置条目都有相关说明,比如php.ini中对默认使用什么值、建议在Windows平台上打开或关闭配置项等,fcgiext.ini 中非常详细地举例说明了多种php处理方式。

2.1 PHP.ini 相关配置变更

1. 首先开启『扩展目录』配置项

然后修改 PHP.ini 配置文件中如下3个配置项(IIS 的辅助配置):
cgi.force_redirect = 0 cgi.fix_pathinfo=1 fastcgi.impersonate = 1

2. 同时,需要开启MySQL相关配置(在如下图所示配置节)
具体应该只开启 MySQL 对应动态链接库配置项


3. 需开启下面设置项,以避免 Discuz! 出现 PHP 不能进行 script 解释的问题。

4. 部署时需打开 log 相关选项(如下图所示的 ini 配置节)
如下图需打开『显示启动时错误信息』选项,一般按照 PHP.ini 文件配置相应说明进行对应修改即可。

?进入实际生产环境时需关闭 log 并开启文件 log

5. PHP 按照上述配置后可以先放置 phpinfo.php 检查 PHP运行环境是否 OK,如果提示有自动区域设置(Locale)问题,可以通过修改下图所示配置项完成: