FPM的全名是FastCGI Process Manager,針對負載較大的網站而發展出的一套PHP FastCGI。經典的特色有:
- 使用命令列stop/start來管理處理程序
- 可以使用不同的php.ini來啟動php-fpm之外,更能以不同的uid/gid/chroot/listening port的環境變數來處理不同的工作
- 具備標準輸出及錯誤記錄檔功能
- 在程式碼出錯時(accidental opcode cache destruction)能緊急重新啟動
- 支援加速上傳
- 額外的函式fastcgi_finish_request()在比較耗時的時機(如影片轉檔或顯示處理進度時),可用來重整資料(flush)
系統環境
FreeBSD 8.4-RELEASE
-
準備工作
- 下戴 php5.6.7並解壓縮
[root@dmz /data/work]#wget http://tw1.php.net/get/php-5.6.7.tar.gz/from/this/mirror -O php5.6.7.tar.gz
[root@dmz /data/work]#tar zxvf php5.6.7.tar.gz
-
安裝 php 5.2.7
-
編譯參數
./configure --with-apxs2=/usr/local/apache24/bin/apxs --with-pear \
--with-mysql=/usr/local/mysql --with-pdo-mysql=/usr/local/mysql \
--with-unixODBC --with-gd --with-zlib --with-jpeg-dir=/usr/local/lib \
--with-png-dir=/usr/local/lib --with-png-dir=/usr/local/lib \
--with-curl=/usr/local/bin/curl --with-gettext=/usr/local/lib \
--with-freetype-dir=/usr/local/share/fonts/TrueType \
--with-iconv=/usr/local/include --with-mcrypt=/usr/local/lib \
--enable-fpm --with-mysqli --with-openssl --enable-dba --enable-bcmath \
--enable-phpdbg-debug --enable-calendar --enable-ftp --enable-mbregex \
--enable-mbstring --disable-debug --disable-ipv6
編譯
[root@dmz /data/work/php-5.6.7]# make
-
編譯測試(可省略)
[root@dmz /data/work/php-5.6.7]# make test
-
安裝
[root@dmz /data/work/php-5.6.7]# make install
-
調整設定
由解壓縮後的範例檔來建立php.ini
cp /data/work/php-5.6.7/php.ini-production /usr/local/etc/php.ini
小編吉姆調整的參數如以下所示: short_open_tag = On
display_errors = On
post_max_size = 100M
include_path = "/usr/local/lib/php"
cgi.fix_pathinfo=1
upload_max_filesize = 100M
extension=phalcon.so
date.timezone = "Asia/Taipei"
session.save_path = "/tmp"
opcache.enable=1
opcache.memory_consumption=64
opcache.max_accelerated_files=2000
opcache.revalidate_freq=2
opcache.consistency_checks=1
其它的調整視個人喜好及系統需求,請自行更改。
-
設定 php-fpm
因為這次是手動自行編譯安裝,所以要注意在編譯時不要忘了加上--enable-fpm之外,也不比使用port或pkg安裝時那麼方便,安裝過程會自動建立啟動檔。所以這裡要自行建立開機啟動檔案。
php-fpm設定檔(php-fpm.conf)
直接複製範例設定檔,再自行依需求編修即可。cp /usr/local/etc/php-fpm.conf.default /usr/local/etc/php-fpm.conf
開機自動執行檔
[root@dmz /data/work/php-5.6.7]# cp sapi/fpm/init.d.php-fpm /usr/local/etc/rc.d/php-fpm
-
rc.conf設定
加入這行:# php_fpm
php_fpm_enable="YES"
- 啟動php-fpm
[root@dmz ~]#/usr/local/etc/rc.d/php-fpm start
Starting php-fpm done
檢查php-fpm是否正常運行
因為預設的port是9000,所以我們只要檢查9000這個port是否有在待命中。 [root@dmz ~]#netstat -a | egrep '9000'
tcp4 0 0 localhost.9000 *.* LISTEN
有看到這行就代表正常在運作,到此為止,已經完成了php-fpm相關的安裝及設定,想打造快速又能負載高流量的Server請搭配安裝nginx。
參考來源
- FastCGI Process Manager
(FPM)
沒有留言:
張貼留言