一直以来配置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.