天天看點

關于php-fpm方式和apache配合使用的幾點記錄

1.apache2.4以後可以編譯單獨的子產品可以使用fastcgi和phpfpm進行配合,打開以下的子產品即可

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so 

2.php5.3.3以後可以可以直接加入編譯選項--enable-fpm即可打開php-fpm模式

3.php5.3.3以前,比如php5.2.17需要添加php-fpm模式更新檔編譯安裝(php5.2.X沒有對應的apache版本與之比對使用,可能是沒有對應的方法,nginx可以正常配合使用)

測試了apache2.2.15和apache2.4.9和Php5.2.17以php-fpm的模式共存,報錯如下:

No input file specified

以下是關于mod_fcgid,mod_fastcgi的說明:

apt-search之後發現有兩個fastcgi子產品:一個是mod_fcgid,一個是mod_fastcgi,用哪個?先搞清楚這兩個再說。

1、mod_fastcgi是FastCGI.com的項目,使用的是FastCGI授權條款。mod_fcgid是Apache基金會負責的項目,使用的是Apache-2.0授權條款。是以,不僅主要負責機關不同,其授權方式也不同。

2、mod_fastcgi的授權不是标準的自由/開放源碼授權條款,是以顯得與其他授權條款格格不入,再加上Linux  distribution套件管理政策的因素,使得mod_fastcgi難以全面進入所有Distribution官方庫。網上會發現說mod_fastcgi幾乎沒有再繼續開發了,是以也使得網路上許多人轉而推薦mod_fcgid。其實這是最大的誤解。官方說法是,FastCGI protocol 是一個輕量級且成熟的通訊協定,是以不太需要再額外加上新功能,而目前的工作主要在于瑕疵修複,也就幾乎沒有任何開發進展。

3、雖然mod_fastcgi與mod_fcgid都支援FastCGI protocol,但設計的概念不同。mod_fcgid的理念是快速的結束FastCGI server并再快速的産生一個。這個方法與FastCGI protocol初衷不同,FastCGI protocol是希望能夠允許long-running request。以PHP 應用為例,為了加速PHP 效能,通常會使用bytecode/opcode cache,例如APC、eAccelerator 或Xcache 等。但為了共享cache,意謂着process/request

必須在同一個shared cache中,而無法跨不同的FastCGI or FCGI process。是以在設計上,隻能允許一個PHP process啟動,然後由此spawn多個children process,使得children 能夠享用parent的bytecode/opcode。

4、PHP的使用者現在已不需要在mod_fastcgi及mod_fcgid之間作選擇,因為PHP 5.3.3之後提供的PHP-FPM (PHP FastCGI Process Manager),能夠更有效率的解決這個問題。況且PHP-FPM使用的是标準BSD-2-Clause License (BSD兩款授權),是個互惠要求性低且相容性高的授權條款。