【51CTO獨(dú)家特稿】本文所介紹的方法應(yīng)該是目前讓PHP最快的辦法:Nginx + PHP-FPM + APC。我們將從安裝Nginx http服務(wù)器、PHP和PHP-FPM補(bǔ)丁,以及APC,詳細(xì)的講解這種方法的具體配置及應(yīng)用,最終的效果如何?相信會讓你大吃一驚。 相關(guān)文章推薦:Nginx http服務(wù)相關(guān)的配置文件 Nginx+PHP配置相關(guān)進(jìn)程的簡要介紹 背景 過去兩年多來,我們的網(wǎng)站一直運(yùn)行Apache+mod_php模塊,大多數(shù)時(shí)候這個(gè)組合應(yīng)付得過來,但隨著流量的增加,我們注意到Apache已 經(jīng)顯得很吃力了,它開始瘋狂地吃內(nèi)存,CPU也被全部搶占去了,我們需要找到一個(gè)更快的方法來解決問題。 Nginx是一個(gè)不錯(cuò)的選擇,很多指標(biāo)都超過了Apache,如I/O、CPU、內(nèi)存和請求數(shù)/秒等,如果需要,隨時(shí)可以從Google搜索相關(guān)信 息。從我個(gè)人的測試結(jié)果來看,Nginx和Apache之間的差異是很明顯的,不好意思,因?yàn)槭欠钦綔y試,因此相關(guān)數(shù)字我就不公布了,這也不是本文的重 點(diǎn)。讓我更自信的是,我只需要幾個(gè)步驟就可以讓性能遠(yuǎn)超Apache。 PHP-FPM? 很多人配置Nginx時(shí)可能都會選擇來自LightTPD項(xiàng)目的spawn-fcgi解析PHP,但使用spawn-fcgi有些問題,因此我打算 放棄它另覓別的辦法。PHP-FPM是PHP FastCGI Process Manager的縮寫,即PHP FastCGI進(jìn)程管理器,實(shí)際上它是PHP的一個(gè)補(bǔ)丁,旨在將FastCGI進(jìn)程管理整合進(jìn)PHP包中。 注意:即使你堅(jiān)持使用Apache,也有很多原因跳過mod_php,直接通過FastCGI解析PHP。使用mod_php時(shí),Apache處理 載入PHP的每個(gè)請求會載入所有的庫,這是一個(gè)巨大的無畏開銷。如果使用FastCGI,PHP的行為更象應(yīng)用程序服務(wù)器,PHP-FPM以及 spawn-fcgi按需要載入和殺掉PHP實(shí)例,這樣做有很多好處,其中很重要的一點(diǎn)就是減少內(nèi)存開銷。 讓我們開始吧 我們使用的是全新安裝的Ubuntu 8.10 Intrepid,第一件事情是安裝所有的依賴包。
準(zhǔn)備好依賴包之后,我們就可以開始。 編譯PHP 我們下載的是PHP 5.2.8源代碼包,還有對應(yīng)的PHP-FPM補(bǔ)丁,我們先打上補(bǔ)丁,然后再編譯。
如果在運(yùn)行上面命令時(shí)遇到錯(cuò)誤,很可能是因?yàn)槿鄙僖蕾嚢斐傻?。另外,確保你正確啟用和禁用了特定的PHP配置選項(xiàng)。緊接著我們通過PECL安裝一 些將會用到的模塊:
在安裝apc模塊時(shí),請務(wù)必關(guān)閉Apache選項(xiàng),如果你沒有關(guān)閉,它也會提醒你。接下來復(fù)制我們常用的php.ini:
最后,我們建立符號鏈接:
PHP編譯到此結(jié)束,剩下要做的事情是修改php-fpm.conf設(shè)置,用文本編輯器打開/etc/php/php-fpm.conf,將進(jìn)程屬 主用戶修改為www-data,這個(gè)文件比較大,因此最好使用搜索功能,我想修改的值分別位于51、52、63和66行。
|
|