Windows平台下Apache +PHP5.3 +FastCGI +XCache安装笔记 2011版

几点说明

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 ;收集参数

 

这篇文章有一个评论

  1. 狂派车贴

    我都用iis配置下的用法。。感觉只能用来测试吧。

发表评论