本节包含有关在 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 将在达到 PHP_FCGI_MAX_REQUESTS 指定的请求数后杀死子进程。指令 min-procs
和 max-procs
通常应避免使用 PHP。PHP 管理自己的子进程和 opcode 缓存,如 APC 将仅在由 PHP 管理的子进程之间共享。如果 min-procs
设置为大于 1
的值,则 php 响应程序的总数将乘以 PHP_FCGI_CHILDREN(2 min-procs * 16 children 将得到 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 )) )