FPM を使うと、複数のプロセスプールをそれぞれ別の設定で実行することができます。
プール単位での設定を行う項目を以下に示します。
-
listen
string
-
FastCGI リクエストを受け入れるアドレス。
'ip.add.re.ss:port', 'port', '/path/to/unix/socket' 形式の構文が使えます。
このオプションは、各プール単位で必須となります。
-
listen.backlog
int
-
listen(2) のバックログを設定します。
-1
はBSD 系のシステムでは最大値を意味します。
デフォルト値: -1
(FreeBSD や OpenBSD)
または 511
(Linux やその他のプラットフォーム)
-
listen.allowed_clients
string
-
接続を許可されている FastCGI クライアントの IPv4 または IPv6 アドレス一覧。オリジナル版 PHP FastCGI (5.2.2+)
における環境変数 FCGI_WEB_SERVER_ADDRS と同じです。
tcp でリスンするソケットに対してのみ意味をなします。
書くアドレスはカンマ区切りで指定します。この値を空にしておくと、任意の ip アドレスからの接続を許可します。
デフォルト値: 任意の ip アドレスを許可。
-
listen.owner
string
-
unix ソケットを使う場合に、そのパーミッションを設定します。Linux では、
読み書きアクセス権限を設定しないとウェブサーバーからの接続を受け付けることができません。
多くの BSD 由来のシステムでは、パーミッションにかかわらず接続を受け付けることができます。
デフォルト値: ユーザーとグループは実行しているユーザーと同じ、モードは 0660
-
listen.group
string
-
listen.owner
を参照ください。
-
listen.mode
string
-
listen.owner
を参照ください。
-
listen.acl_users
string
-
POSIX の Access Control List をサポートしている場合は、このオプションでそれを指定できます。
これを設定した場合は、listen.owner
および listen.group
は無視されます。
値には、ユーザー名をカンマ区切りのリスト形式で指定します。
-
listen.acl_groups
string
-
listen.acl_users
を参照。
グループ名を、カンマ区切りのリスト形式で指定します。
-
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
の場合は作成される子プロセスの最大数。
このオプションは必須です。
このオプションは、同時に処理できるリクエストの最大数を設定します。
mpm_prefork での ApacheMaxClients ディレクティブや、
オリジナル版の PHP FastCGI における環境変数 PHP_FCGI_CHILDREN
と同じです。
-
pm.start_servers
int
-
起動時に作成される子プロセスの数。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.max_spawn_rate
int
-
一度に子プロセスを生成する数。
pm
の値が
dynamic
である場合にのみ使えます。
デフォルト値: 32
-
pm.process_idle_timeout
mixed
-
アイドルなプロセスがkillされた後の秒数。
pm
の値が
使用可能な単位: s(秒)(デフォルト)、m(分)、h(時間)、または d(日)。
デフォルト値: 10 秒
-
pm.max_requests
int
-
各子プロセスが、再起動するまでに実行するリクエスト数。
サードパーティのライブラリにおけるメモリリークの回避策として便利です。
再起動せずにずっとリクエストを処理させる場合は '0' を指定します。
PHP_FCGI_MAX_REQUESTS と同じです。デフォルト値: 0
-
pm.status_listen
string
-
FastCGI の statusリクエスト を受け付けるアドレス。
これを設定すると、独自にリクエストを処理する新しい、
外からは見えないプールが作られます。
これは、長時間実行されるリクエストによって
メインプールがビジーである場合に役立ちます。
なぜなら、そうした処理に長時間かかるリクエストが終わる前であっても、
FPM の情報ページ
を見ることが出来るからです。
listen
ディレクティブと設定できる内容は同じです。
デフォルト値: 未設定。
-
pm.status_path
string
-
FPM の情報ページ
を見るための URI。この値は、スラッシュ (/) で始めなければいけません。
この値を省略した場合は、どの URI も情報ページとは見なされません。
デフォルト値: なし
-
ping.path
string
-
FPM のモニタリングページをコールするための ping URI。この値を省略した場合は、どの URI
も ping ページとは見なされません。これを使うと、
FPM が生きていて応答するかどうかを外部から確かめることができます。
この値の最初はスラッシュ (/) で始めなければならないことに注意しましょう。
-
ping.response
string
-
このディレクティブを使うと、ping リクエストに対するレスポンスをカスタマイズすることができます。
このレスポンスは text/plain 形式となり、レスポンスコード 200 で返されます。
デフォルト値: pong
-
process.priority
int
-
ワーカープロセスに適用される、
nice(2) の値の優先度を指定します。
(指定された場合のみ有効)
この値は、-19(優先度最高) から、20(優先度最低) まで変わります。
デフォルト値: 未設定
-
process.dumpable
bool
-
プロセスのユーザーやグループが、
masterプロセスのユーザーと異なっていた場合でも、
プロセスのダンプ可能フラグ(PR_SET_DUMPABLE prctl)を設定します。
これにより、プロセスのコアダンプを生成できるようになり、
pool のユーザーがプロセスを ptrace 出来るようになります。
デフォルト値: no
PHP 7.0.29, 7.1.17 および 7.2.5 から利用可能
-
prefix
string
-
path を評価する際に、
path の前につける prefix を指定します。
-
request_terminate_timeout
mixed
-
単一のリクエストを処理する際のタイムアウト。この時間を過ぎるとワーカープロセスが kill されます。
このオプションは、'max_execution_time' ini オプションが何らかの理由でスクリプトの実行を止められなかった場合に使われます。
値 '0' は 'Off' を意味します。
使用可能な単位: s(秒)(デフォルト), m(分), h(時間) あるいは d(日)、
デフォルト値: 0
-
request_terminate_timeout_track_finished
bool
-
fastcgi_finish_request がコールされた後や、
アプリケーションが終了し、
内部的なシャットダウン関数がコールされているときには適用されない
request_terminate_timeout を有効にするかどうか。
このディレクティブを有効にすると、
そのような適用されないケースでもタイムアウトを無条件に有効にします。
デフォルト値: no。PHP 7.3.0 以降で利用可能。
-
request_slowlog_timeout
mixed
-
単一のリクエストを処理する際のタイムアウト。この時間を過ぎると
PHP のバックトレースが 'slowlog' ファイルに出力されます。
値 '0' は 'Off' を意味します。
使用可能な単位: s(秒)(デフォルト), m(分), h(時間) あるいは d(日)、
デフォルト値: 0
-
request_slowlog_trace_depth
int
-
slowlog に吐き出されるログのスタックトレースの深さ。
デフォルト値: 20。PHP 7.2.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
bool
-
ワーカーの標準出力および標準エラー出力を本体のエラーログにリダイレクトします。
省略した場合は、FastCGI の仕様にしたがって標準出力および標準エラー出力を
/dev/null にリダイレクトします。
デフォルト値: no
-
decorate_workers_output
bool
-
catch_workers_output
が有効になった場合に、
ワーカーの出力のデコレートを有効にします。
デフォルト値: yes
PHP 7.3.0 以降で利用可能。
-
clear_env
bool
-
FPM ワーカー内の環境をクリアする。
任意の環境変数が FPM ワーカープロセスに到達してしまうことを防ぐために、
ワーカー内の環境をいったんクリアしてから、このプールの設定で指定された環境変数を追加します。
デフォルト値: Yes
-
security.limit_extensions
string
-
FPM がパース可能なメインスクリプトを拡張子で制限する。
サーバー側の設定ミスによる被害を抑えることができます。
FPM には拡張子 .php だけをパースさせるようにしておけば、
悪意のあるユーザーがその他の拡張子で php のコードを実行させようとする試みを防ぐことができます。
デフォルト値: .php .phar
-
apparmor_hat
string
-
AppArmor が有効になっている場合に、
ハット変更を許可します。
デフォルト値: 未設定。
-
access.log
string
-
アクセス・ログ・ファイル。
デフォルト値: 未設定
-
access.format
string
-
アクセス・ログ形式。
デフォルト値: "%R - %u %t \"%m %r\" %s"
:
追加の環境変数を渡して、特定のプールだけで PHP の設定を更新することができます。
そのためには、次のオプションをプール設定ファイルに追加しなければなりません。