原文地址

http://www.chinaz.com/server/2010/0712/120236.shtml

感谢Javalet的精心制作

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip  详细配置图文教程

本文所用的软件名称及下载地址:

PHP5.3.2:php- 5.3.2-nts-Win32-VC9-x86.zip

地址:

http://windows.php.net/downloads/releases/php-5.3.2-nts-Win32-VC9-x86.zip

MySQL:mysql-essential-5.1.48-win32.msi

地址:

http://windows.php.net/downloads/releases/php-5.3.2-nts-Win32-VC9-x86.zip

FastCGI:这个有两种配置方法,正文中详细介绍

phpMyAdmin: 本文用的是3.3.4版

Zend Optimizer:目前的Zend Optimizer还不支持PHP5.3.2 ,等出新版后我们再装。

前 言:PHP5.3的版本选择

现在的PHP5.3 For Windows一共给了四个版本:VC9 x86 Non Thread Safe、VC9 x86 Thread Safe、VC6 x86 Non Thread Safe、VC6 x86 Thread Safe,参考PHP官网提供下载的地方左边的英文来看看这几个版本有什么区别。

一、如何选择PHP5.3的VC9版本和 VC6版本

VC6版本是使用Visual Studio 6编译器编译的,如果你的PHP是用Apache来架设的,那你就选择VC6版本。

VC9 版本是使用Visual Studio 2008编译器编译的,如果你的PHP是用IIS来架设的,那你就选择VC9版本。

二、如何选择 PHP5.3的Thread Safe和Non Thread Safe版本

先从字面意思上理解,Thread Safe是线程安全,执行时会进行线程(Thread)安全检查,以防止有新要求就启动新线程的CGI执行方式而耗尽系统资源。Non Thread Safe是非线程安全,在执行时不进行线程(Thread)安全检查。

再来看PHP的两种执行方式:ISAPI和FastCGI。

ISAPI 执行方式是以DLL动态库的形式使用,可以在被用户请求后执行,在处理完一个用户请求后不会马上消失,所以需要进行线 程安全检查,这样来提高程序的执行效率,所以如果是以ISAPI来执行PHP,建议选择Thread Safe版本;

而FastCGI执行方式是 以单一线程来执行操作,所以不需要进行线程的安全检查,除去线程安全检查的防护反而可以提高执行效 率,所以,如果是以FastCGI来执行PHP,建议选择Non Thread Safe版本。

我 们使用IIS+FastCGI方式配置服务器环境,所以使用Non Thread Safe版本。

了解了如何选择PHP版 本,下面开始我们的IIS+PHP5.3+MySQL5.1+Gzip的配置过程

第一步:手工配置PHP5.3

下载目前为 止最新版的PHP5.3.2

因为手工配置更灵活且更能了解细节,所以我们介绍手工配置PHP,所以选择下载zip文件:php- 5.3.2-nts-Win32-VC9-x86.zip。

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_php

1、 解压php-5.3.2-nts-Win32-VC9-x86.zip至安装目录,这里是C:\

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_windows_02

2、打开php-5.3.2- nts-Win32-VC9-x86,建立php.ini文件

复制一个新的php.ini-development文件,并将文件名改为 phi.ini。

如下图

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_php_03

3、打开php.ini文件,修 改extension_dir的值

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_php_04

修改data.timezone 的值

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_mysql_05

选择启用模块:将用到的模块前 的;去掉,注意启用php_exif.dll时,必需将其放在mbstring后面,即将php_exif.dll剪切到 php_mbstring.dll后面。

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_iis_06

配置FastCGI模式时,将 cgi.force_redirect设置为0,将cgi.rfc2616_headers和fastcgi.impersonate设置为1。

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_mysql_07

稍 候我们会使用iProber探针来检测php环境,所以这里必须开启short_open_tag = On,否则,会出现“iProber.php on line 910”错误。

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_windows_08

至此,php部分配置完毕。下面 我们来在IIS里添加对php的支持,当然,我们采用的FastCGI方式。

第二步:配置IIS的FastCGI模块

为 IIS增加FastCGI模块有两种方式,一种是直接下载FastCGI Extension文件,另一种是使用微软的“web平台安装程序”,在这里我们介绍后者。

第一种方式中FastCGI Extension 文件的名称和下载地址为:

文件名:FastCGI Extension 1.5 for IIS 6.0 and IIS 5.1 - RC (x86)

地址:http://www.iis.net/downloads/default.aspx?tabid=34&i=1877&g=6

该安装程序需要.net 2.0支持,请确认已经安装.net Framework2.0。

下面我们来介绍使用微软的“web平台安装程序”来配置FastCGI。

1、 FastCGI第一步:打开微软的“web平台安装程序”,网址是:

http://www.microsoft.com/web/gallery/install.aspx?appid=fastcgiiis6

打开该网址单击下面红框内的按钮,进入下一步。

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_php_09

在弹出的对话框里,单击运行。

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_windows_10

弹出安全警告对话框,再次单击运行。

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_iis_11

接下来是下载web安装程序对话框

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_windows_12

下载完安装程序后是加载web平台

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_iis_13

加载完后,弹出FastCGI安装程序对话框,单击安装继续。

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_mysql_14

接下来是同意条款,单击我接受

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_php_15

正式进入安装,由于文件较小,安装过程非常迅速。

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_iis_16

稍候即完成安装!

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_mysql_17

最后,单击退出并关闭IE

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_iis_18

2、 下面在IIS服务里面进行配置,在IIS里右击“网站”节点,然后单击属性,弹出属性对话框。如图

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_mysql_19

单 击“主目录”选项卡,然后单击“配置”按钮

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_mysql_20

单 击添加,添加一个新的ISAPI项

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_windows_21

在 C:\window\system32\inetsrv目录下,选中fcgiext.dll

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_windows_22

注意,这里别忘了添加.php扩展名

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_iis_23

在C:\windows\system32\inetsrv文件夹中,找到fcgiext.ini文件,并打开

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_iis_24

在 fcgiext.ini文件底部添加如下配置信息:

[Types]

php = PHP

[PHP]

ExePath=C:\php-5.3.2-nts-Win32-VC9-x86\php-cgi.exe

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_mysql_25

至 此,FastCGI配置完成,下面我们来测试下是否配置正确,将iProber探针程序复制到web目录

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_php_26

在 浏览器输入:http://127.0.0.1/i/iProber.php ,输出如下图:

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_php_27

我 们看到以下信息

PHP运行方式 CGI-FCGI

PHP版本 5.3.2

说 明IIS+PHP的FastCGI方式配置成功!

注意,如果出现以下错误信息

============================

Error Details:

Error Number: 14001 (0x800736b1)。

Error Description: 由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题。

HTTP Error 500 - Server Error.

Internet Information Services (IIS)

============================

则 是没有安装VC9运行库即VISUAL C++ 2008,

Microsoft Visual C++ 2008 Redistributable Package (x86)下载地址:

http://www.microsoft.com/downloads/details.aspx?FamilyID=9B2DA534-3E03-4391-8A4D-074B9F2BC1BF&displaylang=zh-cn

http://download.microsoft.com/download/7/5/0/7502f4e9-1f90-4895-9259-1bde67b8b9a1/vcredist_x86.exe

第三步:在IIS上启用 Gzip压缩

关于Gzip的作用,这里就不再讨论了,大家可以查查资料

1、 启用GZip第一步:右击“网站”,然后单击“属性”,单击“服务”选项卡,选中红框内的两项,然后单击“确定”。

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_iis_28

2、 右击IIS下面的Web服务扩展节点,再单击“添加一个新的Web服务扩展”,如下图

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_iis_29

添加扩展名为“HTTP Compression”的扩展,注意gzip.dll所在的目录为:C:\windows\system32\inetsrv\gzip.dll

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_mysql_30

在IIS的Web服务扩展里,选中HTTP Compression,然后在左侧单击允许。

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_windows_31

3、设置Gzip参数

设置Gzip需要手工修改C:\windows\system32\inetsrv目 录下的MetaBase.xml文件,MetaBase.xml对于IIS的运行非常重要,若被破坏轻则IIS不能正常运行,重则可导致重装系统,所以修 改这个文件之前一定要做好备份,下图中名为MetaBase_backup.xml的文件就是一个备份。

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_mysql_32

下面设置deflate及gzip的具体参数:

设置deflate的压缩参数,其中主要包括文件扩展名,脚 本文件扩展名,压缩比例,需要说明的是,这里压缩比例推荐设置为1,我们稍候讨论哪个压缩比最合适。

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_windows_33

设置gzip的压缩参数,其中主要包括文件扩展名,脚本文件扩展名,压缩比例,需要说明的是,这里压缩比例仍然推荐 设置为1。

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_mysql_34

配置完成后,启动IIS,使设置生效

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_php_35

4、如果不想停止IIS而直接编辑MetaBase.xml文件,则按下图设置:

在若编辑 MetaBase.xml里不想停止IIS,则在IIS节点上,注意是IIS,不是网站,在IIS上右击,单击“属性”

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_php_36

选中“允许直接编辑配置数据库”这一项,可不停止IIS编辑MetaBase.xml文件

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_iis_37

5、检测Gzip压缩是否启用

如果大家的网站发布在Internet上,可以使用许多在线检测工具,很多站 长网站上都有提供,如何网站是在自己的电脑上试验,要检测Gzip启用情况,需要一些能够抓取HTTP头信息的软件,这里推荐使用 HttpAnalyzer V4,下载这个软件后,则可清晰的看到Gzip的作用。

我们先关闭Gzip,看年没有启用Gzip压缩时的HTTP头 信息截图:

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_iis_38

可以看到,上图中的 Compression Saving显示为0,我们启用Gzip压缩,再来看一下HTTP头信息情况:

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_iis_39

上图中可以看到,Content-Encoding显示为gzip,右侧Compression Saving即压缩率显示为73.29%,说明压缩还是很有效的。

用这个软件大家也可以测试一下自己网站的压缩率。

6、有关压缩率的设定

根 据官方的测试数据,200KB 的网页依据不同 gzip 等级的压缩比例为

Gzip level 1 0.593

Gzip level 6 (预设) 0.586

Gzip level 9 0.585

由此 可知,大于 1 以后的压缩效益是很低的,可官方说法,这会消耗服务器资源,因此他们强烈建议设定成 1,gzip 预设是 6。

用某论坛的实际 测试结果如下:

level 9 : 88.7% 压缩比

level 1 : 86.7% 压缩比

用我自己的网站测试数据如下

Level1时的压缩比为62.93%,在Level9时的压缩比为64.30%,可以 看到Level1和Level9基本相差不大。

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_php_40

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_iis_41

第四 步:安装MySQL5.1

我们这里介绍的是MySQL5.1.48版本。

MySQL的下载地 址在本篇开头已经给出。

关于MySQL安装比较简单,这里只给出截图,不再详述

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_php_42

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_iis_43

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_windows_44

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_php_45

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_iis_46

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_php_47

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_php_48

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_windows_49

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_iis_50

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_iis_51

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_iis_52

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_windows_53

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_windows_54

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_windows_55

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_iis_56

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_php_57

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_iis_58

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_mysql_59

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_mysql_60

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_iis_61

IIS+FastCGI+PHP5.3+MySQL5.1+Gzip_mysql_62

由于ZendOptimizer到现在也没有出用于php5.3的版本,我们也就没法安装了。

官方讨论区说,是因为 php5.3的改动太大,使ZendGard也要发生很大变化,所以ZendOptimizer要等Gard完善后才能出来。

至 此,IIS+FastCGI+PHP5.3+MySQL+Gzip完整配置完成。

本文从开始到写成历经了整两天时间,由于个人水平有限,只能 写这最简单的文章,高手就不用看了,希望对刚入门的新手有所帮助,我也就达到目的了。文中对于理论几乎没有阐述,只是对配置过程进行了最详细的介绍,这样 使新手即使不太明白,照本文也可以配置出一样的环境来,本文章的错误及疏漏之处,还请大家指出来,大家在配置中有何问题,我们一起来探讨解决。

现 在已经是凌晨5点了,又一个不眠之夜,不过我相信还有很多像我这样的朋友,因为今天凌晨是2010南非世界杯决赛!西班牙VS荷兰,可惜我没能好好看。

欢 迎访问我的网站:

惟一女孩:www.vegirl.com

Java专题站:www.jsfcn.com

新钛下载站:www.ntdown.com

我的邮箱:javalet@163.com

Javalet完成于

2010 年7月12日5点

感谢Javalet的精心制作