win2008 R2 下 IIS7.5+PHP5.2.17+Mysql5.5.16+Zend3.3.3

前言 windows Server 2008 R2 下面IIS7 5已经对fastcgi的支持有了很大改进,还在使用PHP-ISAPi模式的朋友可以试一下。 鉴

前言

windows Server 2008 R2 下面IIS7.5已经对fastcgi的支持有了很大改进,还在使用PHP-ISAPi模式的朋友可以试一下。

鉴于目前php5.3.1还不能完美的支持主流php系统,不建议大家使用!

Windows版的PHP从版本5.2.1开始有Thread Safe(线程安全)和None Thread Safe(NTS,非
线程安全)之分,这两者不同在于何处?到底应该用哪种?这里做一个简单的介绍。

从2000年10月20日发布的第一个Windows版的PHP3.0.17开始的都是线程安全的版本,这是由
于与Linux/Unix系统是采用多进程的工作方式不同的是Windows系统是采用多线程的工作方式。如果
在IIS下以CGI方式运行PHP会非常慢,这是由于CGI模式是建立在多进程的基础之上的,而非多线程。
一般我们会把PHP配置成以ISAPI的方式来运行,ISAPI是多线程的方式,这样就快多了。但存在一个
问题,很多常用的PHP扩展是以Linux/Unix的多进程思想来开发的,这些扩展在ISAPI的方式运行时就
会出错搞垮IIS。因此在IIS下CGI模式才是PHP运行的最安全方式,但CGI模式对于每个HTTP请求都
需要重新加载和卸载整个PHP环境,其消耗是巨大的。

为了兼顾IIS下PHP的效率和安全,微软给出了FastCGI的解决方案。FastCGI可以让PHP的进程重
复利用而不是每一个新的请求就重开一个进程。同时FastCGI也可以允许几个进程同时执行。这样既解决
了CGI进程模式消耗太大的问题,又利用上了CGI进程模式不存在线程安全问题的优势。

因此,如果是使用ISAPI的方式来运行PHP就必须用Thread Safe(线程安全)的版本;而用
FastCGI模式运行PHP的话就没有必要用线程安全检查了,用None Thread Safe(NTS,非线程安全)
的版本能够更好的提高效率。

windows2008 Server R2下面环境搭建分三种情况,大家可以根据自己的运行需要选择。

1、 IIS7.5+PHP+Mysql+Wincache 1.0RC

这个环境组合大家已经看出来了 没有zend。

各个版本分别是:

PHP5.2.17–请注意是非线程安全版本 PHP 5.2.17 Non-thread-safe zip package,

MYSQL5.0 x64,

Wincache1.0rc for5.2,这个大家可以去微软IIS官方下载,他将极大地提高您的系统运行效率!

如果您的服务器运行的都是开源程序,不需要zend,强烈建议您使用这个配置!

2、 IIS7.5+PHP+Mysql+Zend+Xcache

此组合版本分别是:

Php-5.2.17-win32-vc6-x86.zip PHP请注意是线程安全版本

mysql-essential-5.0.91-winx64.msi

ZendOptimizer3.3.3-windows x86

Xcache1.3 for XCache-1.3.0-php-5.2.17-Win32-VC6-x86.zip

此组合可以完美运行当今主流的PHP系统,但是美中不足的是使用PHP线程安全版本无法加载wincache,很遗憾的一点!但是可以用xcache作为补充,但是相比PHP-ISAPI模式已经好多了!

3、 鉴于IIS7.5的新特性,可以根据每个站点的具体情况定制属于他的专有运行环境!

在iis7.5 fastcgi模式下,IIS官方建议为每个站点设立单独的应用池,并且每个站点都可以拥有它自己的PHP.ini以及fastcgi.exe.允许在一台主机上运行不同版本的PHP.[1]

[1]以上部分内容引自网络.

[2] Windows 2008 R2 仅有X64版本/Windows 2008有X86和X64版本/Windows 7有X86和X64版本; 以下教程对前面两个X86版本也能支持,仅需要替换MYSQL对应版本即可.

准备程序

选择以下这些版本需要注意的是MYSQL在2008R2下可以选择64位的,PHP的VC9是针对IIS的,VC6针对apache的,线程安全和非安全版本本次选择的是线程安全版本, PHP线程安全版本无法加载wincache,所以我们用Xcache作为替代,如果想用wincache就选用非线程安全版本,

1.mysql-essential-5.0.91-winx64.msi
2.Php-5.2.17-win32-vc6-x86.zip
3.ZendOptimizer-3.3.3-windows-i386.exe
4. Xcache1.3 .2for-php-5.2.17-Win32-VC6-x86.zip
5.phpMyAdmin-3.3.10.-all-languages.zip

安装配置路径规划
MYSQL D:\service\ MYSQL
PHP D:\service\ PHP
Zend D:\service\ Zend
MYSQLdatebase D:\service\ MYSQLdatebase
WEB目录D:\WEB\ZTGPS

以下教程为完全说明,做过部分优化,完全经过测试,主调试环境Windows 2008 R2 SP1服务器已安装组件NET.FROMWORK 4+VC2008X64,教程有不当之处欢迎探讨.

一、安装配置MySQL

二、安装配置IIS7.5

三、安装配置PHP

四、IIS7.5配置FASTCGI

五、安装ZendOptimizer 

六、Xcache安装配置

七、网页压缩配置

八、配置phpmyadmin

九、EmpireBak v2010 帝国备份

十、静态化安装配置

十一、其它事项

一、安装配置MySQL

(1),双击 mysql-essential-5.0.91-winx64.msi

NEXT


选择 Custom 自定义安装:

Next

点击"Change"更改MySQL安装目录:D:\service\ MYSQL
待文件复制安装完毕后,进行MySQL设置界面,单击Finish

NEXT

出现以下选择

选择DetailedConfiguration(详细配置):

NEXT

出现以下选择

选择MySQL运行模式:Server Machine

NEXT

出现以下选择

选择 MySQL 数据库默认存储方式:Non-Transactional Database Only
接则选择该选项。 NEXT

出现以下选择

· Manual Setting(人工设置):选择该选项可以手动设置服务器并行连接的最大数目。从前面的下拉框中选择并行连接的数目,如果你期望的数目不在列表中,则在下拉框中输入最大连接数。

设定 MySQL 最大连接数:一般设置为 128 - 512 之间的整数:
NEXT

出现以下选择Enable Strict Mode ,这样MySQL就不会允许细小的语法错误。
建议您取消标准模式以减少麻烦。但熟悉MySQL以后,尽量使用标准模式,因为它可以降低有害数据进入数据库的可能性。
NEXT

出现以下选择
使用Manual Selected Default Character Set/Collation(字符集对话框)来更改 MySQL服务器的默认字符集.
这里请选择你所要的默认字符集,中国大陆就选GBK吧
NEXT

出现以下选择

要想将MySQL服务器安装为服务,并自动启动,请选中Launch the MySQL Server Automatically选项

Service name 默认mysql就行

Include Bin Directory in windows Path 这个也选上
NEXT

修改设定 root 用户密码,注意:不要启动远程连接模式!
把Enable root access from remote machines
Create an anonymous account的两处取消选择

NEXT install
完成 MySQL 的安装,会自动启动 MySQL 服务。

(1)测试MySQL工作是否正常。

打开cmd命令提示符窗口,输入命令:MySQL –u root –p

输入密码后,如果能够正常进入MySQL控制台则说明MySQL安装正常。

更改MySQL数据库目录

a)打开cmd命令提示符窗口,输入命令:net stop MySQL停止MySQL服务运行;

b)打开D:\ service\MySQL\my.ini

找到:

Datadir = "D:\ service\MySQL\data"

修改为:

Datadir = "D:\Service\ MySQLDatabase"

c)将D:\Service\MySQL\data文件夹内的内容复制到D:\Service\MYSQLDatabase;

d)打开cmd命令提示符窗口,输入命令:net start MySQL启动MySQL服务。

e)重新测试MySQL是否工作正常。

(3)准备LibMySQL动态链接库

将D:\Service\MySQL\bin\目录下的 libMySQL.dll, libmcrypt.dll, php5ts.dll(如果没有libmcrypt.dll,php5ts.dll这两个文件请到PHP程序目录下提取) 3个文件复制到 C:\Windows\System32

  注:my.ini上面“basedir”是指向MySQL的安装目录,“datadir”指向MySQL的数据存放目录。

至此MySQL已经安装完毕

三、安装配置PHP

打开Php-5.2.17-win32-vc6-x86.zip

把php的压缩包内的文件解压到 D:\Service\PHP文件夹,将php.ini-dist重命名为php.ini。

打开 php.ini文件,

找到:extension_dir = "./"

将其改为;

extension_dir = "D:/Service/PHP/ext"

extension_dir是存放扩展库(模块)的目录,也就是PHP用来寻找动态扩展模块的目录。

找到Post_max-size= 8M

修改为30M

找到:Windows Extensions

在 Windows Extensions下方的动态模块配置中,需要打开以下模块支持:(去掉模块配置每行前面的;号即可)

extension=php_gd2.dll, GD库支持,如果不打开该模块则Discuz!论坛图片水印不能使用。

extension=php_mcrypt.dll,更好的支持phpmyadmin不选的话,会出现“无法载入mcrypt扩展

extension=php_mbstring.dll,打开mbstring,不选的话用phpMyAdmin会出现红色提示。
extension=php_mysql.dll, 支持MySQL。

extension=php_pdo.dll,

extension=php_pdo_mysql.dll,
前面的分号去掉,这样php才可以支持这些扩展,

还要开哪些功能可以以后根据需要再修改。php.ini可以备份,以后重装系统可以直接用。

8、配置session.save_path路径

更改session.save_path的路径为D:/Service/php/tmp (注意有好几段此文字,请选择如下图的目录位置,此目录需要手动建立并开放读写权限)

session.save_path高级配置及其他说明事项,从php.ini配置文件翻译而来

  你可以使用”N;[MODE;]/path”这样模式定义该路径,N是一个整数,表示使用N层深度的子目录,而不是将所有数据文件都保存在一个目录下。

  [MODE;]可选,必须使用8进制数,默认600(=384),表示每个目录下最多保存的会话文件数量。[MODE;]并不会改写进程的umask。php不会自动创建这些文件夹结构。可使用ext/session目录下的mod_files.sh脚本创建。如果该文件夹可以被不安全的用户访问(比如默认的”/tmp”),那么将会带来安全漏洞。当N>0时自动垃圾回收将会失效,具体参见下面有关垃圾搜集的部分。

  如果你服务器上有多个虚拟主机,建议针对每个不同的虚拟主机分别设置各自不同的目录。

  至此最基本的session配置就完成了,你只要保存php.ini,并重启IIS,即可使用session功能。

  其他session配置说明

  session.save_handler = ”files”

  默认以文件方式存取session数据,如果想要使用自定义的处理器来存取session数据,比如数据库,用”user”。

  session.use_cookies = 1

  是否使用cookies在客户端保存会话sessionid,默认为采用cookies

  session.use_only_cookies = 0

  是否仅仅使用cookie在客户端保存会话sessionid,这个选项可以使管理员禁止用户通过URL来传递id,默认为0,如果禁用的话,客户端如果禁用Cookie将使session无法工作。

  session.name = “PHPSESSID”

  当做cookie name来使用的session标识名

  session.auto_start = 0

  是否自动启动session,默认不启动,我们知道在使用session功能时,我们基本上在每个php脚本头部都会通过session_start()函数来启动session,如果你启动这个选项,则在每个脚本头部都会自动启动session,不需要每个脚本头部都以session_start()函数启动session,推荐关闭这个选项,采用默认值。

  session.cookie_lifetime = 0

  传递sessionid的Cookie有效期(秒),0表示仅在浏览器打开期间有效。

  session.gc_probability = 1

  session.gc_divisor = 100

  定义在每次初始化会话时,启动垃圾回收程序的概率。计算公式如下:session.gc_probability/session.gc_divisor,比如1/100,表示有1%的概率启动启动垃圾回收程序,对会话页面访问越频繁,概率就应当越小。建议值为1/1000~5000。

  session.gc_maxlifetime = 1440

  设定保存的session文件生存期,超过此参数设定秒数后,保存的数据将被视为'垃圾'并由垃圾回收程序清理。判断标准是最后访问数据的时间(对于FAT文件系统是最后刷新数据的时间)。如果多个脚本共享同一个session.save_path目录但session.gc_maxlifetime不同,将以所有session.gc_maxlifetime指令中的最小值为准。

  如果你在session.save_path选项中设定使用子目录来存储session数据文件,垃圾回收程序不会自动启动,你必须使用自己编写的shell脚本、cron项或者其他办法来执行垃圾搜集。

  比如设置”session.gc_maxlifetime=1440″ (24分钟):

  cd /path/to/sessions; find -cmin +24 | xargs rm

  以上是一些常用的session配置选项说明,更多的session配置选项说明你可以参考php.ini文件中的说明。

接下来修改了一些文件上传以及内存使用最大限制:
搜索Resource Limits
找到以下进行修改:
max_execution_time = 30 ; 这里是每个脚本运行的最长时间,可以自己修改加长,单位秒。
max_input_time = 60 ; 这里是每个脚本可以消耗的时间,单位也是秒。
memory_limit = 128M ; 这里是脚本运行允许的最大内存,根据自己机器情况自行配置。
搜索upload_max_filesize
upload_max_filesize = 2M 这里是上载文件的最大许可大小 ,在线上传的图片站、论坛等可能需要设置更大的,自行修改。

现在php基本配置完成了,保存php.ini文件,并将其复制到C:\Windows\

顺便提醒一下别忘记把register_globals = Off修改成register_globals = On。

四、IIS7.5配置FASTCGI

打开PHP目录下的php.ini,查找:extension_dir = "./"

此处为PHP扩展的目录,检查是否如下extension_dir ="D:\service\php\ext\"
 

按图配置参数:

保存并关闭!

接下来将PHP挂接到IIS

打开IIS管理器,找到:“处理程序映射”,打开如下图 点击 添加模块映射:

上图引用自网络,把可执行文件位置替换成D:\service\php\php-cgi.exe即可.

确定后会提示是否创建FASTCGI应用程序,点击是.

此时回到IIS功能视图,找到:“FastCgi设置”,打开并按图操作

添加文件监视和环境变量:PHP_FCGI_MAX_REQUESTS,取值设置为10000:

添加对php.ini的文件监视可以在修改php配置之后重启IIS而让更改实时生效!

进入D:\web\ZTGPS目录,新建一个phpinfo.php文件,内容为:

<?php

phpinfo();

?>

如果加载FASTCGI不成功点击-应用程序池--然后DefaultAppPool应用池-选择高级设置

启用32位应用程序 后面选择 True

 安装 ZendOptimizer

 安装过程非常友好,也比较简单,因而此处无截图说明。但需注意以下几点:

(1) Zend Optimzer 的安装目录要指定为 D:\Service\Zend ;

(2) 在安装过程中提示 php.ini 的位置是,注意观察是否为 C:\Windows ,如果不是必须手动指定为 php.ini 的位置 ;也可以按默认,你把刚才配置的 php.ini 复制到 WINDOWS 目录。 (3) 安装过程中提示 IIS 网站根目录的位置,指定为:D:\WEB 也既你存储站点的总目录 Zend Optimizer 安装完成后会自动重启 IIS 服务,重启完成后需要再次打开 IE 浏览器窗口, 查看 phpinfo.php 支持信息,观察是否包含了 Zend Optimizer 支持信息,如果没有,则说 明 Zend Optimizer 没有安装成功!

默认安装完毕以后不不可以直接支持 Zend 加密,需要做特别的设置 ..下面将讲解如何配置

Zend,并让 php 可以支持 返回桌面,在”我的电脑”上面右键,点击”属性” 然后出现一下窗口,然后点击右边栏的”高级系统设置” 然后再点击下面的”环境变量”

双击打开编辑 Path 变量窗口, 默认的是这样的%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMRO

OT%\System32\WindowsPowerShell\v1.0\

然后在后面添加

;D:\service\Zend\lib;D:\service\Zend\lib\Optimizer-3.3.0\php-5.2.x

还可以指定 PHP 和 MYSQL 把支持库的目录一并添加 方便使用 PHP –V 来调试 PHP 加载 情况 ;D:\service\MYSQL\bin;D:\service\PHP;D:\service\PHP\ext 添加这行即可(根据自己安装的文件路径自行填写)

一路确定

重启系统

想让变量值生效需要重启系统的。

注意:如果你的 Zend 版本和 php 版本和我所演示的不同的话,那么上面的路径可能会更改,请 时情况修改文件路径

现在 php,mysql,fastcgi,zend 配置工作已经完成,如果不出意外的话,那么现在您的 IIS 7.5 就可 以支持以上环境了 请使用 PHP 探针程序或者 PHPINFO.PHP 查看是否配置成功。如果 OK

能看到如下信息就行了

您可能有感兴趣的文章
Windows Server 2008 架设 Web 服务器好代码教程(图文详解)

Win2008系统搭建DHCP服务器

DELL R720服务器安装Windows Server 2008 R2系统的图文详解

Windows Server 2008 R2 DNS 服务器迁移方法

Win7、win2008中让IIS7支持asp的方法