🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 使用 [PHP-FPM](http://php.net/manual/zh/install.fpm.php) 有多种方式来配置一个 web 服务器以提供 PHP 服务。传统(并且糟糕的)的方式是使用 Apache 的 [mod_php](http://stackoverflow.com/questions/2712825/what-is-mod-php)。Mod_php将PHP 绑定到 Apache 自身,但是 Apache 对于该模块功能的管理工作非常糟糕。一旦遇到较大的流量, 就会遭受严重的内存问题。 后来两个新的可选项很快流行起来:[mod_fastcgi](http://www.fastcgi.com/mod_fastcgi/docs/mod_fastcgi.html) 和 [mod_fcgid](http://httpd.apache.org/mod_fcgid/)。 两者均保持一定数量的 PHP 执行进程, Apache 将请求发送到这些端口来处理 PHP 的执行。由于这些库限制了存活的 PHP 进程的数量, 从而大大减少了内存使用而没有影响性能。 一些聪明的人创建一个 fastcgi 的实现,专门为真正与 PHP 工作良好而设计,他们称之为 [PHP-FPM](http://php.net/manual/zh/install.fpm.php)。PHP 5.3.0 之前,为安装它, 你得跨越许多障碍,但幸运的是,PHP 5.3.3 的核心包含了 PHP-FPM,因此在 Ubuntu 12.04 上安装它非常方便。 如下示例是针对 Apache 2.2.22 的,但 PHP-FPM 也能用于其他 web 服务器如 Nginx。 ## 安装 PHP-FPM 和 Apache 在 Ubuntu 12.04 上你可以使用如下命令安装 PHP-FPM 和 Apache: ~~~ user@localhost: sudo apt-get install apache2-mpm-worker libapache2-mod-fastcgi php5-fpm user@localhost: sudo a2enmod actions alias fastcgi ~~~ 注意我们 **必须** 使用 apache2-mpm-worker,而不是 apache2-mpm-prefork 或 apache2-mpm-threaded。 接下来配置 Aapache 虚拟主机将 PHP 请求路由到 PHP-FPM 进程。将如下配置语句放入 Apache 配置文件(在 Ubuntu 12.04 上默认配置文件是 /etc/apache2/sites-available/default)。 ~~~ <VirtualHost *:80> AddHandler php5-fcgi .php Action php5-fcgi /php5-fcgi Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -host 127.0.0.1:9000 -idle-timeout 120 -pass-header Authorization </VirtualHost> ~~~ 最后,重启 Apache 和 FPM 进程: ~~~ user@localhost: sudo service apache2 restart && sudo service php5-fpm restart ~~~ ## 进一步阅读 * [PHP 手册:PHP-FPM](http://php.net/manual/zh/install.fpm.php) * [PHP-FPM 主页](http://php-fpm.org/) * [在 Ubuntu 服务器 Maverick 上安装 Apache + mod_fastcgi + PHP-FPM](https://alexcabal.com/installing-apache-mod_fastcgi-php-fpm-on-ubuntu-server-maverick/) * [为什么 mod_php 的性能很糟糕](http://www.joomlaperformance.com/articles/webcasts/why_mod_php_is_bad_for_performance_52_58.html)