這裡及以下的web伺服器都是以nginx為例子和說明,php以5.3為例子。
fastcgi在伺服器上會啟動多個程序進行解析,這個時候就需要一個fastcgi的管理器,管理哪個子程序可以結束,哪個進行應該開啟了。
fastcgi的程序管理器有兩種,spawn-fcgi和php-fpm。其中的spawn-fcgi一般是和lighttp配合使用的。而php-fpm一般會配合nginx來使用。
在下載下傳php-fpm的時候,需要盡量使php版本和php-fpm版本一緻或者版本差别最小,否則有可能會出現相容性的問題。
php需要下面軟體的支援,如果沒有安裝,請自行安裝:
php的配置檔案存放在 /usr/local/php/lib/php.ini中。
而php-fpm的配置檔案存放在 /usr/local/php/etc/php-fpm.conf中
其中的幾項配置需要注意:
标簽listen_address是配置fastcgi程序監聽的ip位址以及端口,預設是127.0.0.1:9000。
标簽display_errors用來設定是否顯示php錯誤資訊,預設是0,不顯示錯誤資訊,設定為1可以顯示php錯誤資訊。
标簽user和group用于設定運作fastcgi程序的使用者和使用者組。需要注意的是,這裡指定的使用者和使用者組要和nginx配置檔案中指定的使用者和使用者組一緻。
标簽max_children用于設定fastcgi的程序數。根據官方建議,小于2gb記憶體的伺服器,可以隻開啟64個程序,4gb以上記憶體的伺服器可以開啟200個程序。也可以根據服務的記憶體數來估計需要開啟多少fastcgi程序數。大概一個fastcgi程序占20m的記憶體。
标簽request_terminate_timeout用于設定fastcgi執行腳本的時間。預設是0s,也就是無限執行下去,這個參數設定好了可以用于保證不會有執行時間過長的php阻塞住fastcgi程序。
标簽rlimit_files用于設定php-fpm對打開檔案描述符的限制,預設值為1024。這個标簽的值必須和linux核心打開檔案數關聯起來,例如要将此值設定為65535,就必須在linux指令行執行'ulimit -hsn 65536'。
标簽max_requests指明了每個children最多處理多少個請求後便會被關閉,預設的設定是500。
為什麼會需要這個參數設定呢?php和fastcgi都是c寫的,一些php子產品什麼的有可能實際上存在着記憶體洩露等問題,是以一般php作為守護程序一直執行是不大可取的行為。既然php有可能有記憶體洩露的問題,那麼如果fastcgi程序一直執行着,那麼就有可能導緻機器的記憶體出現吃爆的現象。是以在執行一段時間之後,我們是希望fastcgi能自動重新開機動。這個參數就是做這個用的。
标簽allowed_clients用于設定允許通路fastcgi程序解析器的ip位址。如果不在這裡指定ip位址,nginx轉發過來的php解析請求将無法被接受。