Windows Server 2003下安装PHP5.3.2+ZendCore2.5.2+MySQL5.1.44

2010-10-30 王健宇 service

Windows Server 2003(IIS 6)下安装FastCGI+PHP5.3.2+WinCache+ZendOptimizer3.3.3+ZendCore2.5.2+MySQL5.1.44+PhpMyAdmin3.3.1

注意:经过测试,如果要安装ZendOptimizer,那么PHP的最高版本只能去到PHP5.2.6(查看 ZendOptimizer有没有安装成功可以看phpinfo中有没有ZendOptimizer项,如果只有ZendEngine而没有 ZendOptimizer那ZendOptimizer就是没有安装成功),而且装了ZendOptimizer后就不能安装WinCache,或者说 安装了WinCache也不起作用。另外除了FastCGI外,其他的软件都可以通过ZendCore来自动安装,可以说比较快捷,至于版本看了好像都不 是最高版本,可能要选择比较稳定的版本吧。

1. 准备好完成配置所必须的组件:
    a. Window Server 2003(必须打好SP2的补丁)
    b. IIS6(这个不用多说)
    c. PHP5.3.2(注意:一定要下VC9 Non Thread Safe版本,可获得性能和可靠性双提升)
    d. 针对IIS6的FastCGI组件(自从PHP5.3.0开始,由于一直以来PHP+ISAPI的稳定性有问题,在IIS平台上PHP取消了ISAPI模块的支持,只支持FastCGI运行方式,在IIS官方网站www.iis.net下载)
    e. VC++ 2008运行时库(自PHP5.3.0开始,PHP提供VC2008编译版,需要安装VC++ 2008的运行库,在微软官网下载,如果不安装这个,那么安装PHP5.3.2 VC9 NTS版本后在浏览器运行PHP程序会出错)
2. 安装过程
    a. 先把IIS6安装完成
    b. 安装VC++ 2008运行时库(直接执行安装文件即可)
    c. 安装FastCGI组件(直接执行安装文件即可)
    d. 配置FastCGI组件,打开iis管理界面,网站->属性->主目录->配置->添加
        可执行文件框中选择:c:\Windows\system32\inetsrv\fcgiext.dll
        扩展名为:.php
        动作:选限制为并输入:GET,HEAD,POST(或选全部也可)
        选中“脚本引擎”和“确认文件是否存在”复选框
        最后确定
    e. 安装PHP5.3.2至单独文件夹(以前版本说最好不要安装在C:\Program Files这样的目录,因为读文件时会有问题,新版本已经不存在这样的问题,不过还是安装在一个独立的目录好了,本文选择安装在D盘的一个单独目录,为 d:\php),安装时服务器选IIS(FastCGI)
        新建一个系统环境变量PHPRC=d:\php
        将d:\php添加到Path环境变量中(右键“我的电脑”选“属性”,“高级”里面有“环境变量”选项)
    f. 编辑FastCGI组件的配置文件,使其支持PHP。
        用文本编辑器打开c:\Windows\system32\inetsrv\fcgiext.ini
       在[Types]下面增加一行语句:php=PHP
       然后增加如下内容,形如:
        [Types]
        php=PHP

        [PHP]
        ExePath=D:\PHP\php-cgi.exe
        InstanceMaxRequests=10000
        ActivityTimeout=600
        RequestTimeout=600
        EnvironmentVars=PHP_FCGI_MAX_REQUESTS:10000,PHPRC:D:\PHP\
    g. 编辑PHP配置文件
        用文本编辑器打开d:\php\php.ini
       找到[Date]部分,去掉date.timezone参数前的分号,设置date.timezone=Asia/Shanghai
       保存并退出,设置如下:
        default_socket_timeout = 60
        upload_tmp_dir="D:\PHP\uptemp"
        session.save_path="D:\PHP\temp"
        error_log="D:\PHP\temp\php-errors.log"
        cgi.force_redirect=0
        fastcgi.impersonate=1
        fastcgi.logging=0
        extension_dir="D:\PHP\ext"

        date.timezone = Asia/Shanghai
        date.default_latitude = 31.7667
        date.default_longitude = 121.4500
    h. 解压 wincache53_rc.exe ,把 php_wincache.dll 拷贝至 D:\Program Files\PHP\ext,
        并在 php.ini 最后 添加如下:
        [PHP_WINCACHE]
        extension=php_wincache.dll
    i. 安装zend optimizer 以及 zend cor
    j. 重新启动IIS服务,所有任务->重新启动IIS
    k. 在网页主目录中新建文件test.php,写入如下语句:
       <?php
             phpinfo();
       ?>
       并在浏览器中浏览该文件,出现php信息则表示配置成功。
3. 优化配置
    a. 增强PHP的安全性
        打开d:\php\php.ini文件,做如下修改:
        safe_mode = On
        disable_functions = passthru, exec, shell_exec, system, fopen, mkdir, rmdir, chmod, unlink, dir, fopen, fread, fclose, fwrite, file_exists, closedir, is_dir, readdir, opendir, fileperms, copy, unlink, delfile, popen, COM
        expose_php = Off
        memory_limit = 512M(内存占用根据实际内存来配置,不要太高也别太低)
        default_charset = "gb2312"
        doc_root = "E:\wwwroot"(你的网页存放的根目录)
        extension_dir = "d:\php\ext"
        cgi.force_redirect = 0
    b. 修改FastCGI配置,在[PHP]部分中增加
         MaxInstances=20(具体数量根据内存和负载确定,如果为0,系统自动根据负载生成新的进程)
         QueueLength=1000(每个进程在返回错误之前可以接受的请求数,根据内存负载配置)
         InstanceMaxRequests=10000(每个进程实例可以处理的最大请求数)
         EnvironmentVars=PHP_FCGI_MAX_REQUESTS:10000,PHPRC:d:\php(PHP_FCGI_MAX_REQUESTS参数需小于等于InstanceMaxRequests参数的数值)
    d. 保存文件,重启IIS
4.安全配置
    a.修改php.ini文件,将safe_mode = On
    b.将doc_root指定为脚本文档根目录
    c.设置disable_functions = passthru, exec, shell_exec, system, fopen, mkdir, rmdir, chmod, unlink, dir, fopen, fread, fclose, fwrite, file_exists, closedir, is_dir, readdir, opendir, fileperms, copy, unlink, delfile, popen, COM


附送两个.bat

start_php.bat 内容详情

        @ECHO OFF
        ECHO Starting PHP FastCGI
        RunHiddenConsole.exe D:\php\php-cgi.exe -b 127.0.0.1:9000 -c d:\php\php.ini
stop_php.bat 内容详情

        @ECHO OFF
        ECHO Stopping nginx...
        taskkill /F /IM nginx.exe > nul
        echo Stopping PHP FastCGI...
        taskkill /F /IM php-cgi.exe > nul
        exit

发表评论:

Powered by emlog sitemap