配置檔案php-fpm.conf 1

nginx_web發表於2012-06-20

配置檔案php-fpm.conf

 

瞭解一下PHP FastCGI的配置檔案,該配置檔案分為三部分,第一部分為FPM配置、第二部分為全域性配置、第三部分為程式池的定義。熟練掌握配置檔案中的這些指令,對於Nginx的排除很有幫助。由於PHP5.3.3開始整合了php-fpm,它的配置檔案也有原來的xml格式改為了ini格式,除了格式上的更改外,配置內容沒改變,首行是“;”的表示註釋行,不會被FPM解釋。

 

第一部分:FPM配置

 

本配置檔案中的相對路徑都與在PHP安裝是使用的配置引數“--prefix=”有關,在這裡我們是“/usr/local/php5.3.4”,這個字首(prefix)在命令列中可以通過使用“-p”引數來動態改變。

 

 

;include=etc/fpm.d/*.conf

 

該指令用於包含一個或多個檔案。如果glob(3) 存在 (glob() 函式返回匹配指定模式的檔名或目錄。該函式返回一個包含有匹配檔案 / 目錄的陣列。如果出錯返回 false),那麼可以包含由glob(3)模式的一批檔案。該指令可以在配置檔案的任何地方使用。也可使用相對路徑,如果你使用相對路徑那麼可能是下面情況中的一種:

  

 ①、如果使用了-p引數設定,那麼就是全域性字首(global prefix)

②、否則就是/usr/local/php5.3.4,這是在安裝php時使用“--prefix=”指定的路徑。

 

第二部分、全域性部分

 

全域性配置部分有標誌 [global] 開始,它是針對php-fpm全域性設定。

 

;pid = run/php-fpm.pid

    設定pid檔案的位置。預設位置是/usr/local/php5.3.4/var(或者說是“--prefix=”下的var/目錄下)pid指令沒有預設值,就是沒有設定pid檔案;

 

;error_log = log/php-fpm.log

    記錄錯誤日誌的檔案。該指令的預設值為log/php-fpm.log,它的預設字首為/usr/local/php5.3.4/var

 

;log_level = notice

    記錄日誌的級別,可能的值為:alert, error, warning, notice, debug

預設的值為:notice

 

;emergency_restart_threshold = 0

    如果一些子程式在這個時間段(通過該指令設定)內,而帶有IGSEGV SIGBUS退出,那麼FPM將會重啟。它的值為“0”,表示關閉該功能。

 

;emergency_restart_interval = 0

    當文雅(graceful)的重啟服務時,通過使用指令emergency_restart_interval設定時間間隔來決定服務的初始化時間。這個設定對於工作在加速器共享記憶體意外時很有用。

    預設單位:秒

    預設值:0

 

;process_control_timeout = 0

子程式等待master程式對訊號的回應。有效的時間單位:s(econds), m(inutes), h(ours), or d(ays)。預設值為0

 

;daemonize = yes

    FPM轉職後臺執行。如果設定為“no”,那麼FPM會執行在前臺,這種情況用於除錯。

預設值為“yes”;

 

第三部分、程式池的定義

 

通過監聽不同的埠和不同的管理選擇可以定義多個不同的子程式池。程式池的名字將被用於記錄和統計。對於FPM能夠處理的程式池數目的多少這個沒有限制。

 

[www]

    定義一個新的程式池,命名為“www”。變數$pool可以在任何指令中使用,它將會替代相應的程式池名字。例如在這裡是www

 

;prefix = /path/to/pools/$pool

對於每個池的字首,它僅可以應用在下列的指令中:

- 'slowlog'

- 'listen' (unixsocket)

- 'chroot'

 - 'chdir'

- 'php_values'

 - 'php_admin_values'

如果沒有設定字首,那麼全域性的簽字(或者/usr/local/php5.3.4)將被應用。

注意:該指令也可以是相對於全域性字首。

預設值:沒有(none)

 

listen = 127.0.0.1:9000

    接受FastCGI請求的IP地址,有效的語法如下:

         'ip.add.re.ss:port'      — 在指定的IP地址和埠號上監聽TCP套接字;

         'port'                   — 在所有IP地址的指定埠上監聽TCP套接字;

         '/path/to/unix/socket'   — 在unix套接字上監聽。

    注意:“127.0.0.1:9000這個值是強制性的。

 

;listen.backlog = -1

    該指令用於設定listen(2) backlog。如果設定為“-1”,那麼就意味著不受限制。預設值為:128(FreeBSD OpenBSD-1)

 

;listen.allowed_clients = 127.0.0.1

    列出允許FastCGI客戶端連線的ipv4 IP地址。這個指令與原來PHP FCGI (5.2.2+)的環境變數FCGI_WEB_SERVER_ADDRS相等。每一個地址之間需要使用逗號隔開,如果該指令的值為空,那麼該程式池將接受從任何地址的的請求連線。預設為any,即接受任何連線。

 

;listen.owner = nobody

;listen.group = nobody

;listen.mode = 0666

   設定unix套接字許可權,如果使用它,為了允許從web伺服器連線,在Linux中必須設定讀/寫許可權。許多源於BSD的系統允許連線而不管許可權問題。預設值:ser group都被設定為執行FPM的使用者,而mode設定為0666

 

user = nobody

group = nobody

    執行FPM程式的使用者和組,該使用者和組必須在Unix系統中存在。

    注意:user是強制的,必須設定,如果group沒有設定,那麼預設user的組將被使用。

 

pm = dynamic

    選擇程式管理器如何控制子程式的數目。

可能的值:

        static - 對於子程式的開啟數目給定一個鎖定的值(pm.max_children)

        dynamic - 子程式的數目為動態的,它的數目是基於下面指令的值:

                  pm.max_children -  同一時刻能夠存活的最大子程式數目。

                 pm.start_servers -  在啟動時啟動的子程式數目。

             pm.min_spare_servers -  處於“空閒('idle')”狀態(等待處理)的最小子程式。如果空閒程式的數目少於該值,那麼相應的子程式將會被建立。

             pm.max_spare_servers -  最大的空閒子程式數目,如果空閒的子程式數目大於這個數目,那麼相應的子程式將會被殺掉。

注意: dynamic為強制值。

 

pm.max_children = 50

    pm被設定為“static”的時候,該指令的值表示為開啟php-fpm數目數;

pm被設定為“dynamic”的時候,該指令的值表示被建立的最大子程式數目。

    該值設定了能夠同時提供請求的最大限制數目。相當於在Apachempm_prefork下的指令ApacheMaxClients的功能。相當於以前PHP CGI的環境變數PHP_FCGI_CHILDREN

    注意:無論pm被設定為“static”還是“dynamic”,該指令都會被使用。

    注意:該值是強制的。

 

;pm.start_servers = 20

    在啟動FPM時建立的子程式。

    注意:僅將pm設定為“dynamic”時使用。

    預設值:min_spare_servers + (max_spare_servers - min_spare_servers) / 2

 

;pm.min_spare_servers = 5

    期望空閒程式的最小值。

    注意:僅當將pm設定為“dynamic”時才使用該指令。

  

;pm.max_spare_servers = 35

    期望空閒程式的最大值。

    注意:僅當將pm設定為“dynamic”時才使用該指令。

 

;pm.max_requests = 500

    在派生出新的子程式之前,每一個子程式應該處理的請求數目。在第三方庫中這個對於解決記憶體溢位很有用。如果將該值設定為“0”,那麼處理的請求將不會收到限制。相當於PHP_FCGI_MAX_REQUESTS。預設值為0

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27043155/viewspace-733322/,如需轉載,請註明出處,否則將追究法律責任。

相關文章