服务器环境搭建系列 II
场景需要在客户服务器上进行项目部署实施:
[*]客户提供的服务器只有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. 首先开启『扩展目录』配置项
http://note.youdao.com/yws/public/resource/70dd1f631eb1fa401bc6b75bd2fdd531/54D45D4DB5874696BDBF5EB7D2E7C2EF
然后修改 PHP.ini 配置文件中如下3个配置项(IIS 的辅助配置):
cgi.force_redirect = 0 cgi.fix_pathinfo=1 fastcgi.impersonate = 1
2. 同时,需要开启MySQL相关配置(在如下图所示配置节)
http://note.youdao.com/yws/public/resource/70dd1f631eb1fa401bc6b75bd2fdd531/7D3B175AFB13451D871A9E871A63F103
具体应该只开启 MySQL 对应动态链接库配置项
http://note.youdao.com/yws/public/resource/70dd1f631eb1fa401bc6b75bd2fdd531/D3848AF189BA4D13B8B6101AFD075435
3. 需开启下面设置项,以避免 Discuz! 出现 PHP 不能进行 script 解释的问题。
http://note.youdao.com/yws/public/resource/70dd1f631eb1fa401bc6b75bd2fdd531/3323F407F14F4EE9BED086A79EA795DE
4. 部署时需打开 log 相关选项(如下图所示的 ini 配置节)
http://note.youdao.com/yws/public/resource/70dd1f631eb1fa401bc6b75bd2fdd531/BBDFBF11E375465CBAD6C80AA5618251
如下图需打开『显示启动时错误信息』选项,一般按照 PHP.ini 文件配置相应说明进行对应修改即可。
http://note.youdao.com/yws/public/resource/70dd1f631eb1fa401bc6b75bd2fdd531/8FE5DA6268E1470CB790C43ABB137447
进入实际生产环境时需关闭 log 并开启文件 log
http://note.youdao.com/yws/public/resource/70dd1f631eb1fa401bc6b75bd2fdd531/A5DC5D117F3C4D8593B14DC88EBF15C4
5. PHP 按照上述配置后可以先放置 phpinfo.php 检查 PHP运行环境是否
OK,如果提示有自动区域设置(Locale)问题,可以通过修改下图所示配置项完成:
http://note.youdao.com/yws/public/resource/70dd1f631eb1fa401bc6b75bd2fdd531/8A7F076D74A744D8999524E5240B43B4
记得删除 phpinfo.php
2.2 fcgiext.ini 配置文件变更
修改 fcgiext.ini 配置文件 - 指定fcigext.dll需要处理的IIS站点及相关配置
http://note.youdao.com/yws/public/resource/70dd1f631eb1fa401bc6b75bd2fdd531/77E03E43232A4E58B59CA8A26090500E
一般需指定
fcgiext.dll 对应处理的 IIS 站点编号(如下图所示),避免客户服务器环境多系统间影响。
http://note.youdao.com/yws/public/resource/70dd1f631eb1fa401bc6b75bd2fdd531/462A229085E047E997238B23FB170EEE
并在
中进行设定,其中:
php:823433=PHP ;小写php为指定处理.php后缀的url请求,冒号后面数字标识对应IIS站点编号,等号右边的大写PHP表示对应的具体处理节
节中定义对应用于FAST
CGI方式的PHP环境,这个方括号内的PHP可以自定义,只需与中描述对应即可。
此外,须将下面两个时间设长些,因Discuz!中对 UCenter
的处理时间相当长(登录大概要10多秒钟):
RequestTimeout=50
ActivityTimeout=90
2.3
IIS 相关配置变更
这一步骤主要参考《IIS6+PHP5 (FastCGI) 安裝攻略》文章相关内容
假设PHP安装路径在
C:\PHP5,但从客户服务器环境及系统更新维护角度讲不建议这样做。
對
C:\PHP5 目錄增加 IIS_WPG 群組的讀取及執行權限。
(沒加這個就會跑出
FastCGI Error)
http://note.youdao.com/yws/public/resource/70dd1f631eb1fa401bc6b75bd2fdd531/BE96381B7A6945BCABA661099CB5576F
5.
加入系統環境變數 (讓 extension 及 php.ini 能順利被找到)。
Path=C:\PHP5;
PHPRC=C:\PHP5
http://note.youdao.com/yws/public/resource/70dd1f631eb1fa401bc6b75bd2fdd531/7F54F27A06F94F80A7505DF8AC5F0274
6.
開啟 IIS 管理員,如下圖設定。
http://note.youdao.com/yws/public/resource/70dd1f631eb1fa401bc6b75bd2fdd531/3C1B3A4A0BE94DE18912688DA2337F71
7.
增加預設首頁 index.php
http://note.youdao.com/yws/public/resource/70dd1f631eb1fa401bc6b75bd2fdd531/8F03EE19E36B4172803812CA556B1347
8.
檢查網頁服務延伸。
(正常的話應該會有這一項,若沒有請自行加入
C:\WINDOWS\system32\inetsrv\fcgiext.dll)
http://note.youdao.com/yws/public/resource/70dd1f631eb1fa401bc6b75bd2fdd531/1ADF3D38090543AE99A9C63916552613
主要需注意:
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/264
[*]IIS6+PHP5(ISAPI)安装攻略 - http://blog.linym.net/archives/240
[*]PHP 配置相关链接
工具
[*]
PHP
- http://windows.php.net/download/
[*]
FastCGI for
IIS - http://www.iis.net/download/FastCGI
页:
[1]