前言
Ubuntu默认安装的apache的mpm是prefork,也就是说是多进程模式。这是比较稳定的模式。但是由于每个并发连接需要使用一个完整的进程,内存消耗较大,性能上也较差。Apache有很多mpm,我们可以使用worker模式,这是多进程/多线程模式。允许一个进程启用多个线程来接受并发连接,这大大提高了响应速度和降低了内存使用。
对于php而言,默认的prefork模式使用的是mod_php,这在多进程环境下是性能较好的方式。但是对于多线程模式而言,mod_php就有问题了,它不支持多线程环境。因此对于我们要使用的mpm-worker而言,需要使用mod_fcgid来访问php-cgi,这样就可以使用php了。
具体操作如下:
1. 安装apache-mpm-worker和php-cgi
sudo apt-get install apache2-mpm-worker libapache2-mod-fcgid php5-cgi php5-cli
2. 修改fcgid配置文件以映射php
sudo vi /etc/apache2/mods-available/fcgid.conf
添加:
AddHandler fcgid-script .php
FCGIWrapper /usr/lib/cgi-bin/php5 .php
FCGIWrapper /usr/lib/cgi-bin/php5 .php
3. 启用 fcgid 模块
sudo a2enmod fcgid
4. 在相应的站点启用fcgid
修改站点配置文件,在<Directory /var/www>中的Options选项后,添加+ExecCGI。如:
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews +ExecCGI
AllowOverride None
Order allow,deny
allow from all
</Directory>
Options Indexes FollowSymLinks MultiViews +ExecCGI
AllowOverride None
Order allow,deny
allow from all
</Directory>
5. 重新加载apache配置文件
sudo service apache2 force-reload
(如果没有service命令,可以 sudo apt-get install service 来安装它。)
6. 测试 php 已经可以使用
在 /var/www/ 下建立一个phpinfo.php文件,其内写入
<?php phpinfo(); ?>
然后打开浏览器访问这个/phpinfo.php就可以知道是否已经可以使用 php 了。