FastCGI 程式管理器(FPM)-配置

anziguoer發表於2018-03-23

FastCGI 程式管理器(FPM)-配置

配置

FPM 使用類似 php.ini 語法的 php-fpm.conf 和程式池配置檔案。
複製程式碼

php-fpm.conf

全域性配置段

pid string

PID 檔案的位置。預設為空。

error_log string

錯誤日誌的位置。預設:#INSTALL_PREFIX#/log/php-fpm.log。 如果設定為 "syslog",日誌將不會寫入本地檔案,而是傳送到 syslogd。

log_level string

錯誤級別。可用級別為:alert(必須立即處理),error(錯誤情況),warning(警告情況),notice(一般重要資訊),debug(除錯資訊)。預設:notice。

syslog.facility string

設定何種程式記錄訊息,預設值:daemon。

syslog.ident string

為每條資訊新增字首。 如果在同一臺伺服器上執行了多個 FPM 例項,可以修改此預設值來滿足需求。預設值:php-fpm。

emergency_restart_threshold int

如果子程式在 emergency_restart_interval 設定的時間內收到該引數設定次數的 SIGSEGV 或者 SIGBUS退出資訊號,則FPM會重新啟動。0 表示“關閉該功能”。預設值:0(關閉)。

emergency_restart_interval mixed

emergency_restart_interval 用於設定平滑重啟的間隔時間。這麼做有助於解決加速器中共享記憶體的使用問題。可用單位:s(秒),m(分),h(小時)或者 d(天)。預設單位:s(秒)。預設值:0(關閉)。

process_control_timeout mixed

設定子程式接受主程式複用訊號的超時時間。可用單位:s(秒),m(分),h(小時)或者 d(天)。預設單位:s(秒)。預設值:0(關閉)。

process.max int

Fork 的最大 FPM 程式數。使用動態管理程式數時,此設計可以控制在一個程式池內的全域性程式數量。 使用需謹慎。預設值:0。

process.priority int

設定 master 程式的 nice(2) 優先順序(如果設定了此值)。 可以是 -19(最高優先順序)到 20 (更低優先順序)。 預設值:不設定。

daemonize boolean

設定 FPM 在後臺執行。設定“no”將 FPM 保持在前臺執行用於除錯。預設值:yes。

rlimit_files int

設定 master 程式的開啟檔案描述符 rlimit 數。

rlimit_core int

設定 master 程式最大 core 的 rlimit 尺寸。 預設值:0。

events.mechanism string

設定 FPM 使用的事件機制。 可用以下選項:select、pool、epoll、kqueue (*BSD)、port (Solaris)。 預設值:不設定(自動檢測)

systemd_interval int

使用 systemd 整合的 FPM 時,設定間歇秒數,報告健在通知給 systemd。 設定為 0 表示禁用。預設值:10。

執行配置區段

在FPM中,可以使用不同的設定來執行多個程式池。 這些設定可以針對每個程式池單獨設定。

listen string

設定接受 FastCGI 請求的地址。可用格式為:'ip:port','port','/path/to/unix/socket'。每個程式池都需要設定。

listen.backlog int

設定 listen(2) 的 backlog 最大值。“-1”表示無限制。預設值:-1。

listen.allowed_clients string

設定允許連線到 FastCGI 的伺服器 IPV4 地址。等同於 PHP FastCGI (5.2.2+) 中的 FCGI_WEB_SERVER_ADDRS 環境變數。僅對 TCP 監聽起作用。每個地址是用逗號分隔,如果沒有設定或者為空,則允許任何伺服器請求連線。預設值:any。 PHP 5.5.20 和 5.6.4起,開始支援 IPv6 地址。

listen.owner string

如果使用了 Unix 套接字,表示它的許可權。在 Linux 中必須設定讀/寫許可權,以便用於 WEB 伺服器連線。 在很多 BSD 派生的系統中可以忽略許可權允許自由連線。 預設值:執行所使用的使用者和組,許可權為 0660。

listen.group string

參見 listen.owner。

listen.mode string

參見 listen.owner。

listen.acl_users string

當系統支援 POSIX ACL(Access Control Lists)時,可以設定使用此選項。 當設定了的時候,將會忽略 listen.owner 和 listen.group。 值是逗號分割的使用者名稱列表。 PHP 5.6.5 起可用。

listen.acl_groups string

參見 listen.acl_users。 值是逗號分割的使用者組名稱列表。 PHP 5.6.5 起可用。

user string

FPM 程式執行的Unix使用者。必須設定。

group string

FPM 程式執行的 Unix 使用者組。如果不設定,就使用預設使用者的使用者組。

pm string

設定程式管理器如何管理子程式。可用值:static,ondemand,dynamic。必須設定。

static - 子程式的數量是固定的(pm.max_children)。

ondemand - 程式在有需求時才產生(當請求時才啟動。與 dynamic 相反,在服務啟動時 pm.start_servers 就啟動了。

dynamic - 子程式的數量在下面配置的基礎上動態設定:pm.max_children,

  • pm.start_servers
  • pm.min_spare_servers
  • pm.max_spare_servers。

pm.max_children int

pm 設定為 static 時表示建立的子程式的數量,pm 設定為 dynamic 時表示最大可建立的子程式的數量。必須設定。

該選項設定可以同時提供服務的請求數限制。類似 Apache 的 mpm_prefork 中 MaxClients 的設定和 普通PHP FastCGI中的 PHP_FCGI_CHILDREN 環境變數。

pm.start_servers in

設定啟動時建立的子程式數目。僅在 pm 設定為 dynamic 時使用。預設值:min_spare_servers + (max_spare_servers - min_spare_servers) / 2。

pm.min_spare_servers int

設定空閒服務程式的最低數目。僅在 pm 設定為 dynamic 時使用。必須設定。

pm.max_spare_servers int

設定空閒服務程式的最大數目。僅在 pm 設定為 dynamic 時使用。必須設定。

pm.process_idle_timeout mixed

秒數,多久之後結束空閒程式。 僅當設定 pm 為 ondemand。 可用單位:s(秒),m(分),h(小時)或者 d(天)。預設單位:10s。

pm.max_requests int

設定每個子程式重生之前服務的請求數。對於可能存在記憶體洩漏的第三方模組來說是非常有用的。如果設定為 '0' 則一直接受請求,等同於 PHP_FCGI_MAX_REQUESTS 環境變數。預設值:0。

pm.status_path string

FPM 狀態頁面的網址。如果沒有設定,則無法訪問狀態頁面,預設值:無。

ping.path string

FPM 監控頁面的 ping 網址。如果沒有設定,則無法訪問 ping 頁面。該頁面用於外部檢測 FPM 是否存活並且可以響應請求。請注意必須以斜線開頭(/)。

ping.response string

用於定義 ping 請求的返回響應。返回為 HTTP 200 的 text/plain 格式文字。預設值:pong。

process.priority int

設定 worker 的 nice(2)優先順序(如果設定了的話)。 該值從 -19(最高優先順序) 到 20(更低優先順序)。 預設值:不設定

prefix string

檢測路徑時使用的字首。

request_terminate_timeout mixed

設定單個請求的超時中止時間。該選項可能會對 php.ini 設定中的 'max_execution_time' 因為某些特殊原因沒有中止執行的指令碼有用。設定為 '0' 表示 'Off'。可用單位:s(秒),m(分),h(小時)或者 d(天)。預設單位:s(秒)。預設值:0(關閉)。

request_slowlog_timeout mixed

當一個請求該設定的超時時間後,就會將對應的 PHP 呼叫堆疊資訊完整寫入到慢日誌中。設定為 '0' 表示 'Off'。可用單位:s(秒),m(分),h(小時)或者 d(天)。預設單位:s(秒)。預設值:0(關閉)。

slowlog string 慢請求的記錄日誌。預設值:#INSTALL_PREFIX#/log/php-fpm.log.slow。

rlimit_files int

設定檔案開啟描述符的 rlimit 限制。預設值:系統定義值。

rlimit_core int

設定核心 rlimit 最大限制值。可用值:'unlimited',0 或者正整數。預設值:系統定義值。

chroot string

啟動時的 Chroot 目錄。所定義的目錄需要是絕對路徑。如果沒有設定,則 chroot 不被使用。

chdir string

設定啟動目錄,啟動時會自動 Chdir 到該目錄。所定義的目錄需要是絕對路徑。預設值:當前目錄,或者根目錄(chroot時)。

catch_workers_output boolean

重定向執行過程中的 stdout 和 stderr 到主要的錯誤日誌檔案中。如果沒有設定,stdout 和 stderr 將會根據 FastCGI 的規則被重定向到 /dev/null。預設值:無。

clear_env boolean

為 FPM worker 程式清除環境變數。 在程式池配置檔案裡設定環境變數前,阻止任意系統的環境變數進入 FPM worker 程式。 自 PHP 5.4.27、 5.5.11 和 5.6.0 起。 預設值: Yes

security.limit_extensions string

限制 FPM 允許解析的指令碼副檔名。 此設定可以預防 web 伺服器配置的錯誤。 應當限制 FPM 僅僅解析 .php 副檔名,阻止惡意使用者使用其他副檔名執行 php 程式碼。 預設值: .php .phar

access.log string

Access log 檔案。 預設值:不設定

access.format string

access log 的格式。 預設值: "%R - %u %t "%m %r" %s"

參考:

相關文章