前言

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


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>

5. 重新加载apache配置文件

sudo service apache2 force-reload

(如果没有service命令,可以 sudo apt-get install service 来安装它。)

6. 测试 php 已经可以使用

在 /var/www/ 下建立一个phpinfo.php文件,其内写入

<?php phpinfo(); ?>

然后打开浏览器访问这个/phpinfo.php就可以知道是否已经可以使用 php 了。