Unix 시스템의 Lighttpd 1.4

이 섹션에는 Unix 시스템에서 PHP의 Lighttpd 1.4 설치와 관련된 참고 사항과 힌트가 포함되어 있습니다.

계속하기 전에 » Lighttpd 트랙을 사용하여 Lighttpd를 올바르게 설치하는 방법을 알아보세요.

Fastcgi는 PHP와 Lighttpd를 연결하는 데 선호되는 SAPI입니다. Fastcgi는 PHP 5.3의 php-cgi에서 자동으로 활성화되지만 이전 버전의 경우 --enable-fastcgi를 사용하여 PHP를 구성합니다. PHP에 fastcgi가 활성화되어 있는지 확인하려면 php -v에 PHP 5.2.5(cgi-fcgi)가 포함되어야 합니다. PHP 5.2.3 이전에는 PHP 바이너리에서 fastcgi가 활성화되었습니다(php-cgi가 없음).

Lighttpd가 PHP 프로세스를 생성하도록 허용

php에 연결하고 fastcgi 프로세스를 생성하도록 Lighttpd를 구성하려면 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는 자체 자식을 관리하고 APC와 같은 opcode 캐시는 PHP가 관리하는 자식 간에만 공유합니다. "min-procs"가 1보다 큰 값으로 설정되면 PHP 응답자의 총 수는 PHP_FCGI_CHILDREN(2 min-procs * 16 자식은 32 응답자 제공)이 곱해집니다.

Spawning with spawn-fcgi

Lighttpd는 fastcgi 프로세스를 쉽게 생성할 수 있도록 spawn-fcgi라는 프로그램을 제공합니다.

Spawning php-cgi

약간의 무거운 작업이 필요하지만 spawn-fcgi 없이 프로세스를 생성할 수 있습니다. PHP_FCGI_CHILDREN 환경 변수를 설정하면 들어오는 요청을 처리하기 위해 PHP가 생성할 하위 PHP 수를 제어합니다. PHP_FCGI_MAX_REQUESTS를 설정하면 각 자녀가 얼마나 오래 살 것인지(요청 시) 결정됩니다. 다음은 PHP 응답자를 생성하는 데 도움이 되는 간단한 bash 스크립트입니다.

예 #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 ))
)