本节包含有关在 Unix 系统上安装 PHP 的 Lighttpd 1.4 的特定说明和提示。
在继续之前,请使用 » Lighttpd trac 了解如何正确安装 Lighttpd。
FastCGI 是连接 PHP 和 Lighttpd 的首选 SAPI。FastCGI 在 php-cgi 中自动启用。
要配置 Lighttpd 以连接到 PHP 并生成 FastCGI 进程,请编辑 lighttpd.conf。套接字是首选在本地系统上连接到 FastCGI 进程的方法。
示例 #1 部分 lighttpd.conf
server.modules += ( "mod_fastcgi" )
fastcgi.server = ( ".php" =>
((
"socket" => "/tmp/php.socket",
"bin-path" => "/usr/local/bin/php-cgi",
"bin-environment" => (
"PHP_FCGI_CHILDREN" => "16",
"PHP_FCGI_MAX_REQUESTS" => "10000"
),
"min-procs" => 1,
"max-procs" => 1,
"idle-timeout" => 20
))
)
bin-path 指令允许 lighttpd 动态生成 FastCGI 进程。PHP 将根据 PHP_FCGI_CHILDREN 环境变量生成子进程。bin-environment 指令设置生成进程的环境。当达到 PHP_FCGI_MAX_REQUESTS 指定的请求数后,PHP 将终止子进程。min-procs 和 max-procs 指令通常应避免与 PHP 一起使用。PHP 管理自己的子进程,而像 APC 这样的操作码缓存只会共享给 PHP 管理的子进程。如果 min-procs 设置为大于 1 的值,则 php 响应程序的总数将乘以 PHP_FCGI_CHILDREN(2 个 min-procs * 16 个子进程得到 32 个响应程序)。
Lighttpd 提供了一个名为 spawn-fcgi 的程序,使生成 FastCGI 进程的过程变得更容易。
可以不使用 spawn-fcgi 生成进程,尽管需要进行一些繁重的工作。设置 PHP_FCGI_CHILDREN 环境变量来控制 PHP 将生成多少个子进程来处理传入的请求。设置 PHP_FCGI_MAX_REQUESTS 将确定每个子进程的生存时间(以请求为单位)。以下是一个简单的 bash 脚本,可帮助生成 php 响应程序。
示例 #2 生成 FastCGI 响应程序
#!/bin/sh
# Location of the php-cgi binary
PHP=/usr/local/bin/php-cgi
# PID File location
PHP_PID=/tmp/php.pid
# Binding to an address
#FCGI_BIND_ADDRESS=10.0.1.1:10000
# Binding to a domain socket
FCGI_BIND_ADDRESS=/tmp/php.sock
PHP_FCGI_CHILDREN=16
PHP_FCGI_MAX_REQUESTS=10000
env -i PHP_FCGI_CHILDREN=$PHP_FCGI_CHILDREN \
PHP_FCGI_MAX_REQUESTS=$PHP_FCGI_MAX_REQUESTS \
$PHP -b $FCGI_BIND_ADDRESS &
echo $! > "$PHP_PID"
可以跨多个远程机器生成 FastCGI 实例,以扩展应用程序。
示例 #3 连接到远程 php-fastcgi 实例
fastcgi.server = ( ".php" =>
(( "host" => "10.0.0.2", "port" => 1030 ),
( "host" => "10.0.0.3", "port" => 1030 ))
)