2010
06.07

Apache2(mpm-worker) + mod_fastcgi + PHP5 on Debian Linux.

由於終於受不了速度太慢,耗用太多記憶體,所以改用 FastCGI 來跑我的服務。這種做法的好處就不用多說了,網路上很多人都有講,不過我找到的這類教學文章環境大多都是 FreeBSD 上的,所以照著弄了一下,終於搞出來。以下是給 Debian Linux 的作法,做個筆記:

首先到 /etc/apt/sources.list ,在 main 後面加上 non-free 因為 libapache2-mod-fastcgi 屬於 non-free 。

deb http://debian.linux.org.tw/debian/ lenny main non-free
deb-src http://debian.linux.org.tw/debian/ lenny main non-free

接著安裝 Apache2 Mpm Worker 、 FastCGI Module 以及 PHP5-CGI:

apt-get install apache2-mpm-worker libapache2-mod-fastcgi php5-cgi

安裝 Apache2 Mpm Worker 會移除 Apache2 Mpm prefork 和 PHP5 Module 。所以請注意!如果沒有把握,請先把 HTTP 檔案都隔離開來,以避免 PHP5 的 Module 被移除掉之後,你的原始碼都被下載光了。

接著啟用 Apache2 的 Module Actions 和 FastCGI

a2enmod actions fastcgi

寫個 script 來執行 FastCGI

#!/bin/bash
PHPRC="/etc"
export PHPRC
PHP_FCGI_CHILDREN=128
export PHP_FCGI_CHILDREN
exec /usr/bin/php5-cgi

把這個檔案存成 “php.fgci” 然後新建個目錄,某個目錄下 (以這個範例來說是 /var/www 下) 。接著然後改寫 Apache2 的 Config

ScriptAlias /fastcgi/ "/var/www/fastcgi/"

<Directory /var/www/fastcgi>
    Options ExecCGI FollowSymLinks
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

寫完這邊之後,請確認是否有 /etc/apache2/mods-enabled/fastcgi.conf 這個檔案,並且內容為:

<IfModule mod_fastcgi.c>
    AddHandler fastcgi-script .fcgi
    AddHandler php-fastcgi .php .php5 .inc
    Action php-fastcgi /fastcgi/php.fcgi
    FastCgiIpcDir /var/lib/apache2/fastcgi
    FastCgiConfig   -pass-header HTTP_AUTHORIZATION -autoUpdate -killInterval 120 -idle-timeout 60 -maxClassProcesses 1
</IfModule>

都完成之後,重跑 Apache2 /etc/init.d/apache2 restart即可。

至於更進接的設定可以參考大神兩年前寫的apache22 (worker) + mod_fastcgi + php5-fcgi這篇文章研究一下。

No Comment.

Add Your Comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>