== 설치 환경 == * Fedora Core3 * Apache2 (httpd-2.0.52-3.1) * PHP 4.3.11 (update) * ModFastCgi Snapshot 0404142202 == 설치 == === ModFastCgi 설치 === {{{#!vim sh cp Makefile.AP2 Makefile make top_dir=/usr/lib/httpd sudo cp .libs/mod_fastcgi.so /usr/lib/httpd/modules/ }}} ==== 설정 ==== {{{#!vim config # /etc/httpd/conf.d/fastcgi.conf LoadModule fastcgi_module modules/mod_fastcgi.so }}} === PHP를 --enable-fastcgi 옵션켜고 컴파일 === src.rpm을 다운받아서 php.spec에 다음을 고치고 컴파일 {{{#!vim config # 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파일을 다음과 같이 만들어 퍼미션을 실행가능으로 줌 {{{#!vim sh #!/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 수정 {{{#!vim config # /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 API||CGI/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-fcgi||Requests per second: 54.28 ![#/sec] (mean)|| ||mod_php+eAccelerator||Requests per second: 118.54 ![#/sec] (mean)|| ||php-fcgi+eAccelerator|| Requests per second: 119.97 ![#/sec] (mean)|| == 기타 참고사항 == eAccelerator(Turck MMCache)와도 무리없이 작동한다. == 참고/관련 사이트 == * http://www.bigbold.com/snippets/tags/fastcgi * https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=149596 * http://phplens.com/phpeverywhere/node/view/13