首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 服务器 > IIS >

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

2013-10-08 
服务器环境搭建系列 II - PHP在IIS6.0中部署场景需要在客户服务器上进行项目部署实施:客户提供的服务器只

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

场景

需要在客户服务器上进行项目部署实施:客户提供的服务器只有Windows平台;客户可提供的二级域名有限,或无法提供二级域名; 服务器所在网络监管很严格,一般只开放80服务端口(如需开放其他端口则需要较长审批流程),无法通过VPN或FTP方式进行后期系统维护;客户服务器环境为:Windows 2003IIS 6.0(.Net Frameworks 2.0+)项目部署环境要求:PHP 5.3.13MySQL微博(记事狗)论坛(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. 首先开启『扩展目录』配置项服务器环境筹建系列 II - PHP在IIS6.0中部署
然后修改 PHP.ini 配置文件中如下3个配置项(IIS 的辅助配置):
cgi.force_redirect = 0 cgi.fix_pathinfo=1 fastcgi.impersonate = 1

2. 同时,需要开启MySQL相关配置(在如下图所示配置节)服务器环境筹建系列 II - PHP在IIS6.0中部署具体应该只开启 MySQL 对应动态链接库配置项服务器环境筹建系列 II - PHP在IIS6.0中部署

3. 需开启下面设置项,以避免 Discuz! 出现 PHP 不能进行 script 解释的问题。服务器环境筹建系列 II - PHP在IIS6.0中部署
4. 部署时需打开 log 相关选项(如下图所示的 ini 配置节)服务器环境筹建系列 II - PHP在IIS6.0中部署如下图需打开『显示启动时错误信息』选项,一般按照 PHP.ini 文件配置相应说明进行对应修改即可。服务器环境筹建系列 II - PHP在IIS6.0中部署
?进入实际生产环境时需关闭 log 并开启文件 log 服务器环境筹建系列 II - PHP在IIS6.0中部署
5. PHP 按照上述配置后可以先放置 phpinfo.php 检查 PHP运行环境是否 OK,如果提示有自动区域设置(Locale)问题,可以通过修改下图所示配置项完成:服务器环境筹建系列 II - PHP在IIS6.0中部署记得删除 phpinfo.php
2.2 fcgiext.ini 配置文件变更
修改 fcgiext.ini 配置文件 -?指定fcigext.dll需要处理的IIS站点及相关配置服务器环境筹建系列 II - PHP在IIS6.0中部署
一般需指定 fcgiext.dll 对应处理的 IIS 站点编号(如下图所示),避免客户服务器环境多系统间影响。服务器环境筹建系列 II - PHP在IIS6.0中部署
并在 [Types] 中进行设定,其中:
php:823433=PHP ;小写php为指定处理.php后缀的url请求,冒号后面数字标识对应IIS站点编号,等号右边的大写PHP表示对应的具体处理节[PHP]
[PHP]节中定义对应用于FAST CGI方式的PHP环境,这个方括号[PHP]内的PHP可以自定义,只需与[Types]中描述对应即可。
此外,须将下面两个时间设长些,因Discuz!中对 UCenter 的处理时间相当长(登录大概要10多秒钟):
RequestTimeout=50
ActivityTimeout=90

2.3 IIS 相关配置变更这一步骤主要参考《IIS6+PHP5 (FastCGI) 安裝攻略》文章相关内容假设PHP安装路径在 C:\PHP5,但从客户服务器环境及系统更新维护角度讲不建议这样做。

對 C:\PHP5 目錄增加 IIS_WPG 群組的讀取及執行權限。
(沒加這個就會跑出 FastCGI Error)
服务器环境筹建系列 II - PHP在IIS6.0中部署

5. 加入系統環境變數 (讓 extension 及 php.ini 能順利被找到)。
Path=C:\PHP5;
PHPRC=C:\PHP5
服务器环境筹建系列 II - PHP在IIS6.0中部署

6. 開啟 IIS 管理員,如下圖設定。
服务器环境筹建系列 II - PHP在IIS6.0中部署

7. 增加預設首頁 index.php
服务器环境筹建系列 II - PHP在IIS6.0中部署

8. 檢查網頁服務延伸。
(正常的話應該會有這一項,若沒有請自行加入 C:\WINDOWS\system32\inetsrv\fcgiext.dll)
服务器环境筹建系列 II - PHP在IIS6.0中部署


主要需注意:A. PHP.exe所在目录的可执行权限设定 - 需注意保障客户服务器安全,除非必要不要开启 IIS_WPG 系统默认用户组除了文件夹浏览、读取、执行权限外其他任何权限,特别不能为了简单直接开启系统的 Everyone 权限。B. 尽量不使用fcgiext.js进行配置,而是直接修改fcgiext.ini配置文件 - 因为客户服务器有时会出于安全考虑关闭了本地cscript脚本的执行服务。

存在(遗留)问题1. PHP 的文件 log 好像不能启动;
2. PHP 相关优化配置工作没有进行 - 数据库缓存设置、进程内存使用大小限制、上传文件限制等;
3. fcgiext 相关优化配置工作没有进行;
4. 未进行压力测试,需进一步对系统瓶颈进行考察 - 通过Google搜索或压力测试

建议1. 最好将 Discuz! 和 微博(记事狗)分别放置于不同的应用程序池 - 如BBS和Weibo,以避免同一个w3wp.exe进程内执行的相互影响。2. 最好将各站点除.php外地其他所有对应处理扩展都删除。3. 将 IIS 相关优化整理出来。

参考
    IIS6+PHP5 (FastCGI) 安裝攻略?-? http://blog.linym.net/archives/264IIS6+PHP5(ISAPI)安装攻略 -??http://blog.linym.net/archives/240PHP 配置相关链接

工具PHP -? http://windows.php.net/download/FastCGI for IIS -?http://www.iis.net/download/FastCGI


热点排行