· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
PHP With FastCGI

설치 환경

  • Fedora Core3
    • Apache2 (httpd-2.0.52-3.1)
    • PHP 4.3.11 (update)
  • ModFastCgi Snapshot 0404142202

설치

ModFastCgi 설치

cp Makefile.AP2 Makefile
make top_dir=/usr/lib/httpd
sudo cp .libs/mod_fastcgi.so /usr/lib/httpd/modules/

설정

# /etc/httpd/conf.d/fastcgi.conf
LoadModule fastcgi_module modules/mod_fastcgi.so

PHP를 --enable-fastcgi 옵션켜고 컴파일

src.rpm을 다운받아서 php.spec에 다음을 고치고 컴파일
# php.spec의 일부분입니다.
pushd build-cgi
#build --enable-force-cgi-redirect 이 라인을 지우고, 아래 라인 첨가
build --enable-fastcgi
popd

rpmbuild -bb php.spec을 실행한다.
  • 이때, autoconf가 최신이 아닌 경우, Makefile을 만드는 과정에서 에러를 내고 끝내는 경우가 있다. Fedora Core3인 경우는 autoconf를 최신으로 업데이트 하니 문제 없어짐.
  • 이미 설치되어있는 php와 버전이 맞지 않는다면, 컴파일이 완료되고 테스트하는 중에 빌드가 정지될 것이다.

빌드가 끝나면 (혹은 컴파일 끝난 후 테스트 도중에 끝나거나) build-cgi/ 디렉토리 하위에 cgi-fcgi옵션으로 빌드된 php바이너리가 있다.
  • build-cgi/sapi/cgi/php 파일을 php-fcgi라는 이름으로 바꾸어 /usr/bin/php-fcgi로 복사
  • php-server파일을 다음과 같이 만들어 퍼미션을 실행가능으로 줌
    #!/bin/sh
    PHPRC="/etc/php-fcgi.ini"
    export PHPRC
    PHP_FCGI_CHILDREN=4
    export PHP_FCGI_CHILDREN
    exec /usr/bin/php-fcgi -c $PHPRC
  • /etc/php-fcgi.ini를 /etc/php.ini를 복사해서 만듦
    • cgi.fix_pathinfo=1;
  • /etc/httpd/conf.d/fastcgi.conf 수정
    # /etc/httpd/conf.d/fastcgi.conf
    LoadModule fastcgi_module modules/mod_fastcgi.so

    AddType application/x-httpd-fastphp .php
    Action application/x-httpd-fastphp /php-fastcgi/php-server

    #FastCgiWrapper On
    #FastCgiSuexec /usr/sbin/suexec
    FastCgiServer /home/www/html/php-fastcgi/php-server
  • mod_php를 비활성화시키고, 아파치 재시작

기타 설정

<!> 중요:
  • 문제: /etc/httpd/logs가 심볼릭 링크로 되어있는 경우는 mod_fastcgi가 작동하지 않는다.
  • 해결법 :mod_fastcgi를 고쳐주거나, logs를 실제 디렉토리로 만들어준다.

점검

phpinfo();를 넣어 test.php를 만들어 열어본다. 그러면 다음과 같이 세팅되어 있음을 확인할 수 있다.
Server APICGI/FastCGI
Configuration File (php.ini) Path/etc/php-fcgi.ini

테스트 결과

<!> 평균값이 아님. (옵테론246 듀얼)
ab -n 200 -c 10 http://sitename/phpinfo.php
php-fcgi Requests per second: 880.0 [#/sec] (mean)
mod_php Requests per second: 870.65 [#/sec] (mean)
거의 같음.

ab -n 500 -c 10 http://sitename/moniwiki/wiki.php/SimplePage
mod_php Requests per second: 49.66 [#/sec] (mean)
php-fcgiRequests per second: 54.28 [#/sec] (mean)
mod_php+eAcceleratorRequests per second: 118.54 [#/sec] (mean)
php-fcgi+eAccelerator Requests per second: 119.97 [#/sec] (mean)

기타 참고사항

eAccelerator(Turck MMCache)와도 무리없이 작동한다.




sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2006-05-08 19:15:59
Processing time 0.0109 sec