本节包含有关在 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 )) )