2024 年 PHP 大会日本站

Unix 系统上的 Lighttpd 1.4

本节包含有关在 Unix 系统上安装 PHP 的 Lighttpd 1.4 的特定说明和提示。

在继续之前,请使用 » Lighttpd trac 了解如何正确安装 Lighttpd。

FastCGI 是连接 PHP 和 Lighttpd 的首选 SAPI。FastCGI 在 php-cgi 中自动启用。

让 Lighttpd 生成 php 进程

要配置 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-procsmax-procs 指令通常应避免与 PHP 一起使用。PHP 管理自己的子进程,而像 APC 这样的操作码缓存只会共享给 PHP 管理的子进程。如果 min-procs 设置为大于 1 的值,则 php 响应程序的总数将乘以 PHP_FCGI_CHILDREN(2 个 min-procs * 16 个子进程得到 32 个响应程序)。

使用 spawn-fcgi 生成

Lighttpd 提供了一个名为 spawn-fcgi 的程序,使生成 FastCGI 进程的过程变得更容易。

生成 php-cgi

可以不使用 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"

连接到远程 FCGI 实例

可以跨多个远程机器生成 FastCGI 实例,以扩展应用程序。

示例 #3 连接到远程 php-fastcgi 实例

fastcgi.server = ( ".php" =>
   (( "host" => "10.0.0.2", "port" => 1030 ),
    ( "host" => "10.0.0.3", "port" => 1030 ))
)
添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top