php-fpmをsystemdで起動する時にハマったのでメモ
環境
CentOS 7
PHP 7.0.6 (fpm-fcgi)
# systemctl start php-fpm.service
のエラー
# journalctl
Started php-fpm service.
Starting php-fpm service...
php-fpm.service holdoff time over, scheduling restart.
Started php-fpm service.
Starting php-fpm service...
php-fpm.service holdoff time over, scheduling restart.
・
・
・
start request repeated too quickly for php-fpm.service
Failed to start php-fpm service.
たぶん、systemdがphp-fpmのPIDを自動判定できず、怒られている。
/etc/systemd/system/php-fpm.service
[Unit]
Description = php-fpm service
[Service]
PIDFile = /var/run/php-fpm/php-fpm.pid
ExecStart = /usr/local/php/7.0.6/sbin/php-fpm --fpm-config /usr/local/php/7.0.6/etc/php-fpm.conf
Restart = always
Type = simple
User = nobody
Group = nobody
[Install]
WantedBy = multi-user.target
php-fpmが、rootユーザで実行されることを嫌うので、nobodyユーザで実行するようにしている。
/usr/local/php/7.0.6/etc/php-fpm.conf
pid = /var/run/php-fpm/php-fpm.pid
PIDファイルを指定する。
/usr/local/php/7.0.6/etc/php-fpm.d/confファイル
listen = /var/run/php-fpm/php-fpm.sock
ソケットファイルを指定する。
実行ユーザ・グループの設定は php-fpm.service
で指定したユーザ・グループ。
/var/run/php-fpm
$ ls -al /var/run/php-fpm
drwxr-xr-x 2 nobody nobody 80 2017-07-11 13:18 php-fpm
PIDファイル・ソケットファイルを置くディレクトリ
所有者を変更しておく。