· 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)와도 무리없이 작동한다.


ID
Password
Join
How you look depends on where you go.


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.0015 sec