场景
需要在客户服务器上进行项目部署实施:
- 客户提供的服务器只有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)问题,可以通过修改下图所示配置项完成:
记得删除 phpinfo.php
2.2 fcgiext.ini 配置文件变更
修改 fcgiext.ini 配置文件 - 指定fcigext.dll需要处理的IIS站点及相关配置
一般需指定
fcgiext.dll 对应处理的 IIS 站点编号(如下图所示),避免客户服务器环境多系统间影响。
并在 [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 相关配置变更
假设PHP安装路径在
C:\PHP5,但从客户服务器环境及系统更新维护角度讲不建议这样做。
對
C:\PHP5 目錄增加 IIS_WPG 群組的讀取及執行權限。
(沒加這個就會跑出
FastCGI Error)
5.
加入系統環境變數 (讓 extension 及 php.ini 能順利被找到)。
Path=C:\PHP5;
PHPRC=C:\PHP5
6.
開啟 IIS 管理員,如下圖設定。
7.
增加預設首頁 index.php
8.
檢查網頁服務延伸。
(正常的話應該會有這一項,若沒有請自行加入
C:\WINDOWS\system32\inetsrv\fcgiext.dll)
主要需注意:
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
相关优化整理出来。
参考
工具
分享到:
相关推荐
cve-2017-7269-iis6.0环境搭建及复现过程 有详细的复现过程。及出错记录
cve-2017-7269-iis6.0 的poc 再metersploit中使用,亲测可用。
asp.net MVC3程序在IIS6.0服务器上的部署 MVC3 IIS6.0 部署
XP-IIS6.0完整安装包 XP-IIS6.0完整安装包 XP-IIS6.0完整安装包 XP-IIS6.0完整安装包
win2003系统iis6.0完整版 IIS 6.0安装说明: IIS 6.0 适用于Windows server 2003系统安装步骤如下: 开始---控制面板----添加/删除程序----添加/删除Windows组件(A)----应用程序服务器--- 将解压后的IIS文件路径复制...
IIS6.0是microsoft开发的服务器,具有较好的稳定性。
2003sp1 IIS6.0安装包(iis6.0) 保证文件齐全 2003sp1 IIS6.0安装包(iis6.0) 保证文件齐全 2003sp1 IIS6.0安装包(iis6.0) 保证文件齐全
IIS 6.0入门及进阶系列课程之九:理解IIS 6.0中的身份验证
I386 IIS6.0 --W2003 安装IIS需要问的文件
IIS6.0入门及进阶系列课程之一:IIS 6.0预览
windows2003 + IIS6.0 环境下以Fastcgi方式配置php .docx
IIS 6.0 中的一个最重要的变动涉及 Web 服务器安全性。为了更好地预防恶意用户和攻击者的攻击,在默认情况下,没有将 IIS 安装在 Microsoft Windows Server 2003 家族的成员上。 要点 为了更好地预防恶意用户和...
另外,Windows Server 2003还有一个新的组策略“禁止安装IIS”,有了该组策略,我们就可以禁止Windows 2003在活动目录(AD)森林中禁止不准备作Web服务器用的机器上安装IIS 6.0,防止网络上出现根本无用的、不安全的...
iis6.0使用指南 iis6.0使用指南 iis6.0使用指南 iis6.0使用指南
iis6.0 sp2完整版iis6.0 sp2完整版iis6.0 sp2完整版iis6.0 sp2完整版
手工搭建iis6.0+php5.6+mysql5.7网站环境教程,包括一些过程中遇到的问题及解决方法,例如:在phpinfo()中找不到mysql的相关扩展
WIN2003+IIS6.0+PHP5.3配置
IIS-v6.0 里面有安装的文档,教你如何安装,IIs的使用,iis的介绍
Microsoft IIS 6.0: Administrator's Pocket Consultant
IIS是微软官方未Windows系统提供的服务器解决方案。IIS具有集成性、可扩展性、安全性等特点,帮助用户管理内联网、外联网和互联网Web服务器解决方案。目前IIS6.0经过不断改善,内部结构可以完全满足所有客户的需求。