鍍金池/ 教程/ PHP/ 配置 Web 服務(wù)器提供 PHP 服務(wù)
驗(yàn)證郵件地址
自動(dòng)加載類
PHP 與 MySQL
緩存 PHP opcode
檢測(cè)一個(gè)值是否為 null 或 false
PHP 標(biāo)簽
從性能角度來(lái)看單引號(hào)和雙引號(hào)
發(fā)送郵件
處理日期和時(shí)間
define() vs. const
配置 Web 服務(wù)器提供 PHP 服務(wù)
PHP 與 UTF-8
我們?cè)谑褂媚膫€(gè)版本的 PHP?
凈化 HTML 輸入和輸出
PHP 與正則表達(dá)式
存儲(chǔ)密碼
PHP 與 Memcached

配置 Web 服務(wù)器提供 PHP 服務(wù)

使用 PHP-FPM

有多種方式來(lái)配置一個(gè) web 服務(wù)器以提供 PHP 服務(wù)。傳統(tǒng)(并且糟糕的)的方式是使用 Apache 的 mod_php。Mod_php將PHP 綁定到 Apache 自身,但是 Apache 對(duì)于該模塊功能的管理工作非常糟糕。一旦遇到較大的流量, 就會(huì)遭受?chē)?yán)重的內(nèi)存問(wèn)題。

后來(lái)兩個(gè)新的可選項(xiàng)很快流行起來(lái):mod_fastcgi 和 mod_fcgid。 兩者均保持一定數(shù)量的 PHP 執(zhí)行進(jìn)程, Apache 將請(qǐng)求發(fā)送到這些端口來(lái)處理 PHP 的執(zhí)行。由于這些庫(kù)限制了存活的 PHP 進(jìn)程的數(shù)量, 從而大大減少了內(nèi)存使用而沒(méi)有影響性能。

一些聰明的人創(chuàng)建一個(gè) fastcgi 的實(shí)現(xiàn),專門(mén)為真正與 PHP 工作良好而設(shè)計(jì),他們稱之為 PHP-FPM。PHP 5.3.0 之前,為安裝它, 你得跨越許多障礙,但幸運(yùn)的是,PHP 5.3.3 的核心包含了 PHP-FPM,因此在 Ubuntu 12.04 上安裝它非常方便。

如下示例是針對(duì) Apache 2.2.22 的,但 PHP-FPM 也能用于其他 web 服務(wù)器如 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。 接下來(lái)配置 Aapache 虛擬主機(jī)將 PHP 請(qǐng)求路由到 PHP-FPM 進(jìn)程。將如下配置語(yǔ)句放入 Apache 配置文件(在 Ubuntu 12.04 上默認(rèn)配置文件是 /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 進(jìn)程:

user@localhost: sudo service apache2 restart && sudo service php5-fpm
restart

進(jìn)一步閱讀