nginx+php-fpm+apc+mysql編譯安裝

目前讓PHP最快的環境組合是:Nginx + PHP-FPM + APC + MYSQL。本文將講解 nginx 伺服器、php、apc、mysql的安裝配置及應用。

安裝前提示:linux 軟體在編譯安裝後,他的安裝位置和配置文件都可以在源碼目錄中的文件中找到,如果無法確定軟體的相關文件安裝在哪裡,可以仔細的查看一下源碼中的文本文件。

Nginx?
Nginx (「engine x」) 是一個高性能的 HTTP 和 反向代理 伺服器,也是一個 IMAP/POP3/SMTP 代理伺服器 。詳細介紹可以見http://wiki.nginx.org/Chs。

PHP-FPM?
PHP-FPM是PHP FastCGI Process Manager 的縮寫,即 PHP FastCGI 進程管理器,他是目前最看好的 php 解析器。PHP-FPM 從 php5.3.3 版本開始被整合進 php 安裝包中,安裝時只要啟用即可。
注意:即使你堅持使用Apache,也有很多原因跳過mod_php,直接通過FastCGI解析PHP。使用mod_php時,Apache處理載入PHP的每個請求會載入所有的庫,這是一個巨大的無畏開銷。如果使用FastCGI,PHP的行為更象應用程序伺服器,PHP-FPM以及spawn-fcgi按需要載入和殺掉PHP實例,這樣做有很多好處,其中很重要的一點就是減少內存開銷。

APC?
APC,全稱是Alternative PHP Cache,官方翻譯為」可選PHP緩存」。詳細介紹可見http://pecl.php.net/package/apc或者http://php.net/manual/en/book.apc.php。

開始安裝

我們使用的是全新安裝的 debian6,第一件事情是安裝所有的依賴包。

準備好依賴包之後,我們就可以開始。

編譯和安裝 PHP 及 php-fpm

我們下載的是 PHP 5.3.9 源代碼包,已經集成了 PHP-FPM(PHP5.3.3以前的需要下載對應的 PHP-FPM 補丁),然後再編譯。

如果在運行上面命令時遇到錯誤:

意思是編譯過程找不到對應庫文件。其中,-lxxx 表示庫文件 libxxx.so 的符號鏈接。
解決辦法是 apt-get install libxxx-dev 或者是查看符號鏈接是否正確。

另外,確保你正確啟用和禁用了特定的 PHP 配置選項。緊接著我們通過PECL安裝一些將會用到的模塊:

在安裝apc模塊時,請務必關閉Apache選項,如果你沒有關閉,它也會提醒你。

接下來複制我們常用的php.ini:

最後,我們建立符號鏈接:

PHP編譯到此結束,剩下要做的事情是修改php-fpm.conf設置,用文本編輯器打開/etc/php/php-fpm.conf,將進程屬主用戶修改為www-data。

配置 php-fpm

因為從 php5.3.3 以後,php-fpm 被整合進 php 的安裝包之中,在編譯時只要設定啟用參數了,那麼 php-fpm 也會被默認安裝。默認安裝的 php-fpm 位置是:
/usr/local/etc/php-fpm.conf //配置文件安裝位置
/usr/local/sbin/php-fpm //啟動文件安裝位置

默認安裝的 php-fpm 給我們準備了一個程序來控制 fastcgi 進程,這個文件是 $PREFIX/sbin/php-fpm($PREFIX 是安裝目錄),但是此文件只能啟動 php-fpm,要想關閉 php-fpm,需要查看 master進程號,然後 kill 掉:

我想使用平滑啟動/關閉管理模式來管理 php-fpm 該怎麼做呢?

php-fpm 同樣也給我們提供了一個平滑啟動/關閉的控制程序,這個文件是php-5.3.9/sapi/fpm/init.d.php-fpm(編譯後的源碼包中),把它複製為 /etc/init.d/php-fpm:

該程序有如下參數:
start 啟動php的fastcgi進程
stop 強制終止php的fastcgi進程
quit 平滑終止php的fastcgi進程
restart 重啟php的fastcgi進程
reload 重新載入php的php.ini
logrotate 重新啟用log文件

通過查看 /data/software/php-5.3.9/sapi/fpm/init.d.php-fpm,我們能夠知道 php-fpm 的日誌及進程號默認是保存在 ${prefix} 的var下,但是配置文件 php-fpm.conf 默認是沒有開啟的,找到對應的地方去掉注釋即可。

這樣,在修改了php.ini之後,我們可以使用

這樣,就保持了在php的fastcgi進程持續運行的狀態下,又重新載入了php.ini。

編譯和安裝 MySQL

下載和編譯 MySQL,但是先不要安裝:

需要改幾個許可權問題才能安裝 MySQL,否則會出現 Access denied for user 『root』@』localhost』 (using password: NO) 經典問題:

安裝和啟動 MySQl,修改 root 密碼,登錄 MySQL:

編譯Nginx

和編譯PHP一樣非常簡單:

注意:要修改nginx目錄及文件許可權,以免運行時因許可權問題發生錯誤。

在etc下創建一個符號鏈接,方便管理:

配置/etc/nginx/conf/nginx.conf,最終修改結果如下:

優化設置FastCGI參數,可以避免Nginx 503錯誤,打開/etc/nginx/fastcgi_params,添加以下參數:

最後,我們創建一個SystemV風格的啟動腳本,保存為/etc/init.d/nginx。

不要忘了設置可執行許可權。

設置你的網站

這一階段的工作主要按你自己的習慣完成,這裡僅做一個粗略的介紹。首先我們創建一個目錄來存放我們的網站配置文件,在創建一個目錄用來存放激活的文件(此目錄存放指向可用配置的符號鏈接):

接下來為我們的網站增加一個conf文件/etc/nginx/sites-available/default.conf,內容如下:

為新增加的網站設置添加符號鏈接,即激活新的網站設置:

啟動

end

《nginx+php-fpm+apc+mysql編譯安裝》上有14條評論

    1. 額…
      我用的就是chrome啊,那個時候正在後台改評論的代碼,估計是此事件造成的…
      正在將主題的js和css轉出…

      1. 不折騰博客,總有個要折騰啊…
        ps:不懂?是問我放正文還是評論么!
        其實我是測試主題的插圖鏈接…所以就…沒其他圖啊…
        這主題很強大,但bug也很多…畢竟是0.2版啊…

發表評論

電子郵件地址不會被公開。 必填項已用*標註