Windows平台下Apache+PHP5.3+FastCGI+XCache安装笔记 2011版
http://www.newsmth.net/pc/pccon.php?id=7204&nid=425506
http://lee.kometo.com/archives/655#more-655


几点说明

1.PHP自5.3版起默认不在支持针对Windows的VC6编译版本,只提供VC9版本的,而APAche官方提供的Apache Windows编译包都是VC6的。所以我们需要使用第三方编译的VC9版本的Apache。

2.PHP 的 None Thread Safe 版本适用于CGI/FastCGI方式,而相应的Thread Safe版本适用于SAPI和Mod方式

3.http://www.apachelounge.com/download/ 这里提供了大量适用于Windows的LAMP有关预编译包,包括VC9版本的Apache和FastCGI,这个网站也是PHP官方推荐的网站。


版本选择及安装包获取

Apache 2.2 VC9   来源: http://www.apachelounge.com/download/
mod_fcgid-2.3.6-win32-x86  http://www.apachelounge.com/download/

PHP 5.3.6 nts vc9  来源:php.com
VC 2008 RunTime vcredist_x86 来源:php.com
XCache-1.3.0-php-5.3.0-nts-Win32-VC9-x86.zip 来源:http://xcache.lighttpd.net/pub/Releases/


安装过程

1.下载准备好有关安装包,解压apache,php到规划好的目录,比如:d:\server\
2.按照说明分别把 mod_fcgid.so 和php_xcache.dll 解压到相应的目录
3.安装 VC 2008 RunTime vcredist_x86
4.建立配置文件目录,比如 d:\server\confs
5.分别编辑/建立有关的配置文件,有关配置文件详见下面实例,(配置文件中涉及的路径及具体配置请根据实际情况修改)
6.使用 httpd -k install -n "service name" 方式手动安装服务


基本目录结构

d:\server
        \apache
        \php5
        \confs
              \apache
              \php5
        \logs
   \wwwroot


配置文件示例

Aapche默认配置文件修改( d:\server\apache\conf\httpd.conf)

#修改 Serverroot  
#修改 documentroot  
  
#在文件末尾增加自动搜索配置文件的路径  
include "D:/server/confs/apache/*.conf" 

php-fcgid.conf (d:\server\confs\apache\)

#加载 mod_fcgid  
LoadModule fcgid_module modules/mod_fcgid.so  
<IfModule mod_fcgid.c>  
    AddHandler fcgid-script .fcgi .php  
    #php.ini的存放目录  
    FcgidInitialEnv PHPRC "d:/server/confs/php5/"  
    # 设置PHP_FCGI_MAX_REQUESTS大于或等于FcgidMaxRequestsPerProcess,防止php-cgi进程在处理完所有请求前退出  
    FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 500  
    #php-cgi每个进程的最大请求数  
    FcgidMaxRequestsPerProcess 500  
    #php-cgi最大的进程数  
    FcgidMaxProcesses 5  
    #最大执行时间  
    FcgidIOTimeout 120  
    FcgidIdleTimeout 120  
    #php-cgi的路径  
    FcgidWrapper "D:/server/php-5.3.6-nts/php-cgi.exe" .php  
    AddType application/x-httpd-php .php  
</IfModule>  
  
#这里是关于prefork的配置,此配置未经验证,而且似乎上面提到apache安装包不是使用prefork模式的  
#这段配置放到这里仅仅是留在备用参考,可以不使用  
<IfModule prefork.c>  
   StartServers       5  
   MinSpareServers    5  
   MaxSpareServers     10  
   ServerLimit    1024  
   MaxClients        768  
   MaxRequestsPerChild   0  
</IfModule> 

vh.conf(d:\server\confs\apache\)

#加载一些mod  
LoadModule rewrite_module modules/mod_rewrite.so  
  
#定义有关目录、端口、虚拟主机配置  
  
Listen 10.5.183.132:80  
NameVirtualHost 10.5.183.132:80  
  
<Directory "D:/wwwroot">  
  Options ExecCGI FollowSymLinks ExecCGI #必须有ExecCGI,才能运行PHP  
  AllowOverride All  
  Order allow,deny  
  Allow from all  
  DirectoryIndex index.html index.php  
</Directory>  
  
<VirtualHost 10.5.183.132:80>  
    DocumentRoot "D:/wwwroot/www.test.local"  
    ServerName www.test.local  
</VirtualHost>

php.ini (d:/server/confs/php5)

[Custom]  
;***************************************************  
;     Custom Config 这段配置可以直接附加到默认的PHP.ini文件末尾  
;***************************************************  
date.timezone  = "Asia/Shanghai"  
pdo_mysql.default_socket=  
cgi.force_redirect = 0  
cgi.fix_pathinfo = 1  
fastcgi.impersonate = 1;  
  
;session.save_handler = files  
;session.save_path = /tmp  
session.use_cookies = 1  
;session.use_only_cookies = 1  
  
; file_uploads = On  
; upload_tmp_dir =  
; upload_max_filesize = 2M  
; post_max_size = 8M  
; memory_limit = 8M  
  
; max_execution_time = 30  
; max_input_time = 60  
  
display_errors = on  
; error_reporting = E_ALL  
log_errors = off  
error_log = d:\server\confs\logs\php-error.log  
  
; mysql.connect_timeout = 1  
; doc_root = d:\wwwroot  
  
;; 加载Ext  
extension_dir = "D:\server\php-5.3.6-nts\ext"  
extension = php_mysql.dll  
extension = php_mysqli.dll  
;extension = php_pdo.dll  
extension = php_pdo_mysql.dll  
extension = php_mbstring.dll  
extension = php_mcrypt.dll  
extension = php_gd2.dll  
extension = php_bz2.dll  
extension = php_curl.dll  
  
[xcache]  
;; Xcache 配置  
;; 安装成 zend extension (推荐), 路径一般是 "$extension_dir/xcache.so"  
;; zend_extension = /usr/local/lib/php/extensions/non-debug-non-zts-xxx/xcache.so  
;; Windows 系统例子:  
;zend_extension_ts = d:/Servers/Php5.3/ext/php_xcacshedd.dll  
;; 或者您也可把 XCache 安装成 extension, 注意确保您的 extension_dir 设置正确, 并把 xcache.so 或者 php_xcache.dll 放到该目录里面  
; extension = xcache.so  
;; 或者 Win32 系统:  
extension = "d:/server/php-5.3.6-nts/ext/php_xcache.dll"  
  
xcache.admin.enable_auth = On  
xcache.admin.user = "admin"  
; xcache.admin.pass = md5($您的密码)  
xcache.admin.pass = "******"  
  
; 这里的多数选项仅在 ini 里可以修改, 这里列出的都是默认值, 除非另外说明  
  
; select low level shm/allocator scheme implemenation  
xcache.shm_scheme =        "mmap"  
; 禁用: xcache.size=0  
; 启用: xcache.size=64M 之类 (任意>0的值) 同时请注意您的系统 mmap 上限  
xcache.size  =                64M  
; 建议设置为 cpu 数 (cat /proc/cpuinfo |grep -c processor)  
xcache.count =                 1  
; 只是个参考值, 您可以放心地存储多于此数量的项目(php脚本/变量)  
xcache.slots =                8K  
; 缓存项目的 ttl, 0=永久  
xcache.ttl   =                 0  
; 扫描过期项目的时间间隔, 0=不扫描, 其他值以秒为单位  
xcache.gc_interval =           0  
  
; 同上, 只是针对变量缓存设置  
xcache.var_size  =             8M  
xcache.var_count =             1  
xcache.var_slots =            8K  
; 默认, 允许 ini_set()  
xcache.var_ttl   =             0  
; 最大ttl值  
xcache.var_maxttl   =          0  
xcache.var_gc_interval =     300  
  
; 仅测试用  
xcache.test =                Off  
; /dev/zero 时无效  
xcache.readonly_protection = Off  
; 对于 *nix 系统, xcache.mmap_path 是文件路径而不是目录, (可以不存在 但是必须能创建).  
; 如果您期望启用 ReadonlyProtection, 可以使用类似 "/tmp/xcache"  
; 2 个 php 组不会共享同一个 /tmp/xcache  
; 对于 Win32 系统, xcache.mmap_path=匿名MAP名字, 不是文件路径. 建议使用 XCache 字眼避免跟其他软件冲突  
xcache.mmap_path =    "/tmp/xcache"  
  
; 仅用于 *nix 系统  
; 设置为空(禁用) 或者类似 "/tmp/phpcore/"  
; 注意该目录应该能被 php 写入文件 (跟 open_basedir 无关)  
xcache.coredump_directory =   ""  
  
xcache.cacher =               On  
xcache.stat   =               On  
xcache.optimizer =           Off  
  
; 如果 xcache.coveragedump_directory 设置为空则本设置自动为 Off  
xcache.coverager =          Off  
  
; 请确保本目录能被 coverage viewer 脚本读取 (注意 open_basedir)  
; 依赖于 xcache.coverager=On  
xcache.coveragedump_directory = ""  
  
[Xdebug]  
;Xdebug 配置 ,暂时还没测试Xdebug和Xcache的兼容性,这段配置放在这里仅仅是备用  
  
;zend_extension_ts = "D:\server\php5\ext\php_xdebug-2.0.5-5.3-vc6.dll"  
;zend_extension = "D:\server\php5\ext\php_xdebug-2.0.5-5.3-vc6-nts.dll"  
  
xdebug.auto_trace = off ;开启自动跟踪  
xdebug.remote_autostart = off ;开启远程调试自动启动  
xdebug.remote_enable = 1  
xdebug.remote_host = pc-dev.ysh.local  
xdebug.remote_port = 9000  
;xdebug.remote_handler = “dbgp”  
xdebug.show_exception_trace = off ;开启异常跟踪  
xdebug.collect_vars = On ;收集变量  
xdebug.collect_return = On ;收集返回值  
xdebug.collect_params = On ;收集参数


原文链接 http://lee.kometo.com/archives/655#more-655