FPM を使うと、複数のプロセスプールをそれぞれ別の設定で実行することができます。
プール単位での設定を行う項目を以下に示します。
-
listen
string
-
FastCGI リクエストを受け入れるアドレス。
'ip.add.re.ss:port', 'port', '/path/to/unix/socket' 形式の構文が使えます。
このオプションは、各プール単位で必須となります。
-
listen.backlog
int
-
listen(2) のバックログを設定します。'-1' は無制限を意味します。
デフォルト値: -1
-
listen.allowed_clients
string
-
接続を許可されている FastCGI クライアントの ipv4 アドレス一覧。オリジナル版 PHP FastCGI (5.2.2+)
における環境変数 FCGI_WEB_SERVER_ADDRS と同じです。
tcp でリスンするソケットに対してのみ意味をなします。
書くアドレスはカンマ区切りで指定します。この値を空にしておくと、任意の ip アドレスからの接続を許可します。
デフォルト値: 任意の ip アドレスを許可。
5.5.20 および 5.6.4 以降は、IPv6 アドレスも指定できるようになりました。
-
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 は無視されます。
値には、ユーザー名をカンマ区切りのリスト形式で指定します。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 の場合は作成される子プロセスの最大数。
このオプションは必須です。
このオプションは、同時に処理できるリクエストの最大数を設定します。
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.process_idle_timeout
mixed
-
秒数 after which an idle process will be killed.
Used only when pm is set to ondemand.
使用可能な単位: s(秒)(デフォルト)、m(分)、h(時間)、または d(日)。
デフォルト値: 10 秒
-
pm.max_requests
int
-
各子プロセスが、再起動するまでに実行するリクエスト数。
サードパーティのライブラリにおけるメモリリークの回避策として便利です。
再起動せずにずっとリクエストを処理させる場合は '0' を指定します。
PHP_FCGI_MAX_REQUESTS と同じです。デフォルト値: 0
-
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
-
Specify the nice(2) priority to apply to the worker process (only if set).
The value can vary from -19 (highest priority) to 20 (lower priority).
デフォルト値: 未設定
-
prefix
string
-
Specify prefix for path evaluation
-
request_terminate_timeout
mixed
-
単一のリクエストを処理する際のタイムアウト。この時間を過ぎるとワーカープロセスが kill されます。
このオプションは、'max_execution_time' ini オプションが何らかの理由でスクリプトの実行を止められなかった場合に使われます。
値 '0' は 'Off' を意味します。
使用可能な単位: s(秒)(デフォルト), m(分), h(時間) あるいは d(日)、
デフォルト値: 0
-
request_slowlog_timeout
mixed
-
単一のリクエストを処理する際のタイムアウト。この時間を過ぎると
PHP のバックトレースが 'slowlog' ファイルに出力されます。
値 '0' は 'Off' を意味します。
使用可能な単位: s(秒)(デフォルト), m(分), h(時間) あるいは d(日)、
デフォルト値: 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
-
ワーカーの標準出力および標準エラー出力を本体のエラーログにリダイレクトします。
省略した場合は、FastCGI の仕様にしたがって標準出力および標準エラー出力を
/dev/null にリダイレクトします。
デフォルト値: no
-
clear_env
boolean
-
FPM ワーカー内の環境をクリアする。
任意の環境変数が FPM ワーカープロセスに到達してしまうことを防ぐために、
ワーカー内の環境をいったんクリアしてから、このプールの設定で指定された環境変数を追加します。
PHP 5.4.27、PHP 5.5.11、PHP 5.6.0 以降で利用可能です。
デフォルト値: Yes
-
security.limit_extensions
string
-
FPM がパース可能なメインスクリプトを拡張子で制限する。
サーバー側の設定ミスによる被害を抑えることができます。
FPM には拡張子 .php だけをパースさせるようにしておけば、
悪意のあるユーザーがその他の拡張子で php のコードを実行させようとする試みを防ぐことができます。
デフォルト値: .php .phar
-
access.log
string
-
アクセス・ログ・ファイル。
デフォルト値: 未設定
-
access.format
string
-
アクセス・ログ形式。
デフォルト値: "%R - %u %t \"%m %r\" %s"
追加の環境変数を渡して、特定のプールだけで PHP の設定を更新することができます。
そのためには、次のオプションをプール設定ファイルに追加しなければなりません。