LAMP之路

不积跬步,无以至千里!

[架设教程]windows2003+IIS6+php5.3+mysql5.5环境架设详细教程

2013-10-23 一抹阳光 环境架设

写在前面的话:

对于IIS6中支持php5.2相信使用过php的大多数人都不陌生。但PHP5.3与PHP5.2相比,变化很多。 由于PHP5.3的全新特效及改进,原有的isapi方式解析PHP脚本已经不被支持,PHP从5.3.0以后的版本开始使用微软的 FastCGI模 ,这是一个更先进的方式,运行速度更快,更稳定!

新版本的PHP5.3通过以往老方法已经不能在IIS上安装了,现在给出在IIS上安装PHP5.3以后版本的教程。

 一、下载环境软件

注意事项:PHP 版本选择5.3.x,小版本号越新越好,MySQL 版本选择 5.5.x,小版本号越新越好,没有特殊原因不用其他版本。PHP 尽量使用非安装的绿色版本,MySQL 尽量用安装版本。

1、mysql-5.5

    http://dev.mysql.com/downloads/mysql/5.5.html#downloads

2、FastCGI

    x86 http://go.microsoft.com/?linkid=9707432
    x64 http://go.microsoft.com/?linkid=9707433

3、PHP5.3

    http://windows.php.net/downloads/releases/php-5.3.27-nts-win32-VC9-x86.msi

    注:关于php版本的选择

4、phpMyAdmin

    http://www.phpmyadmin.net/home_page/downloads.php

 

二、安装环境软件

1、安装mysql

    双击 mysql安装程序-->选择 Custom 自定义安装-->点击 “Change” 更改 MySQL 安装目录,只安装“MySQL Server”组件 其他取消-->待文件复制安装完毕后,进行 MySQL 设置界面,单击 Finish-->选择 Detailed Configuration 进行详细配置-->选择 MySQL 运行模式:Server Machine-->选择 MySQL 数据库默认存储方式:Non-Trans Only (MYISAM)-->设定 MySQL 最大连接数:一般设置为 128 - 512 之间的整数,此处设置为512-->设定 MySQL 网络参数,注意:不要勾选启用 Strict Mode!那个 Addfirewall 的选项仅在需要外连 MySQL 的时候勾选上,也就是说给防火墙加个出入站的策略-->设定 MySQL 默认字符集:以用户站点语言为准,默认我们填 gbk-->Windows 环境设定-->修改设定 root 用户密码,root 密码请设置的比较复杂些。注意:非必要情况下,不要启动远程连接模式! 完成 MySQL 的安装,并启动 MySQL 服务。

 

2、安装FastCGI
    一路下一步即可。
    安装完成后到C:\Windows\system32\inetsrv目录找到fcgiext.ini文件,添加下列语句:
[Types]
php=PHP
[PHP]
ExePath=C:\php\php-cgi.exe 此为您的php程序安装目录

3、安装PHP5.3

    双击 PHP安装程序-->选择IIS FastCGI

    注:官方提供的安装包只是将安装过程稍微简化一点而已,没有十分特别的内容。我们完全可以下载Zip包自行解压配置。

  开启FastCGI的配置只需要在php.ini里面加入下面的语句:   

cgi.force_redirect = 0
cgi.fix_pathinfo= 1
fastcgi.impersonate = 1
upload_tmp_dir="C:\WINDOWS\Temp" 更改临时目录
session.save_path="C:\WINDOWS\Temp" 更改临时目录
error_log="C:\WINDOWS\temp\php-errors.log" 更改临时目录

4、配置IIS
    打开IIS管理器,在网站属性中主目录选项卡中,选择“配置”选项,添加ISAPI扩展。
    添加拓展名为.php的ISAPI扩展,可执行文件为C:\WINDOWS\system32\inetsrv\fcgiext.dll。
    在IIS管理器里面,点击web服务扩展,看FastCGI Handler是不是允许,使之允许。
    重启IIS

三、环境设置
1.mysql安装后,打开配置文件my.in查看datadir=
是否为C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.5\data
修改为自定义目录,最后记得停掉mysql服务,把原data目录中的mysql和performance_schema目录,复制到自定义data目录。
出现此问题是因为安装mysql的时候,安装路径和数据库路径需要分开设置的,数据库路径设置往往被忽略,就成了默认路径。

 2.修改php.ini
request_order = "CGP"
short_open_tag = Off
根据需要设置禁止函数:
disable_functions = passthru,exec,system,chroot,chgrp,chown,shell_exec,proc_open,proc_get_status,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,stream_socket_server,fsocket,fsockopen,gzinflate
date.timezone = "Asia/Shanghai"
error_reporting  =  E_ALL & ~E_NOTICE 

3.IIS web扩展服务,只保留fastcGI,其余全部禁止

4.给php安装目录修改权限,添加IIS_WPG用户组,并添加用户权限为读取。经实测,该步骤可略去。

5.关于zend optimizer
    从PHP5.3开始如果要支持ZendGuard加密的PHP代码,必须安装Zend Guard Loader,老的zend optimizer将不被支持。


 ================================
附:DedeCMS V5.3/V5.5/V5.7 安全设置指南 

附:
php版本的选择:

linux下直接下载源码,在服务器上编译即可,发现windows下有4个版本:

VC9 x86 Non Thread Safe
VC9 x86 Thread Safe
VC6 x86 Non Thread Safe
VC6 x86 Thread Safe

网上查看了下4种版本对应使用的情况

一、如何选择 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 版本。

如果需要使用Zend Optimizer的话请使用PHP Thread Safe版,如果不使用Zend,则直接使用PHP NTS版效率会更高。

 

搭配方案:

php5.2:

IIS6+php5.2 TS+FastCGI +Zend Optimizer

IIS6 +php5.2 NTS +FastCGI

 

php5.3:

IIS6 +php5.3 NTS +FastCGI +Zend Guard Loader

IIS6 +php5.3 TS +FastCGI