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