apache2上配置php-fastcgi


一直以来配置LAMP都会让php以apache handler的方式运行,虽然这样的运行模式会非常高效,但一直觉得它很占我VPS的资源,可怜的128M内存。所以尝试将php以fastcgi的模式运行。

安装

首先安装apache的fastcgi模块,apache下的fastcgi模式有两个:fastcgi_module与fcgid_module,比较后发现fcgid_module比较有优势,所以我选择了fcgid的模块,可以从源安装,也可以从官方下载然后自己编译。图方便,我直接从源安装:

apt-get install libapache2-mod-fcgid

接下去安装php-cgi

apt-get install php5-cgi

如果自己编译的话,记得去掉–with-apxs2,并加上–enable-cgi编译选项。

配置

1.加载module_fcgid,在httpd.conf下添加

LoadModule fcgid_module modules/mod_fcgid.so

如果有载入过php5的模块,这里要把它去掉,注释掉就好。

#LoadModule php5_module modules/libphp5.so

2.配置fcgid

<IfModule mod_fcgid.c>
  AddHandler    fcgid-script .fcgi
  #配置fcgid的sock路径
  SocketPath /var/lib/apache2/fcgid/sock
# Where to look for the php.ini file? 
  #php.ini的所在目录
  DefaultInitEnv PHPRC        "/etc/php/"

# Maximum requests a process handles before it is terminated 
  MaxRequestsPerProcess       100

# Maximum number of PHP processes 
  MaxProcessCount             25

# Number of seconds of idle time before a process is terminated 
  IPCCommTimeout              240
  IdleTimeout                 240
  
  FCGIWrapper /usr/bin/php-cgi .php
  IPCConnectTimeout 20
</IfModule>

3.配置站点文件。在第个站点文件下加入,即如果以.php结尾就交给php-cgi执行。

<Directory /srv/http/>
    Options FollowSymLinks MultiViews
    <IfModule module_fcgid>
        <FilesMatch "\.ph(p3?|tml|ps)$">
            AddHandler fcgid-script .php
            Options +ExecCGI
        </FilesMatch>
    </IfModule>
    AllowOverride All
    Order allow,deny
    allow from all
 </Directory>

4.停止apache.
5.切换apache的运行模式为worker模式。
6.运行apache.