CentOS 8 で、nginx + php-fpm を使用するための設定について

インストール

CentOS 8

CentOS 8では、remiレポジトリの登録が完了していれば、以下でphp-fpmはインストールできます。

yum install php[バージョン]-php-fpm
PHP 7.4の場合は、以下になります。
yum install php74-php-fpm

nginx用設定

remiでインストールしている場合、php-fpmの設定ファイルは以下のディレクトリにあります。 この中の設定ファイルをnginx用に編集します。

/etc/opt/remi/php[バージョン]/
PHP 7.4の場合は、以下のディレクトリになります。
/etc/opt/remi/php74/

nginxの設定は、以下を参照

www.conf

www.confファイルの場所は、以下になります。

/etc/opt/remi/php[バージョン]/php-fpm.d/www.conf
PHP 7.4の場合は、以下になります。
/etc/opt/remi/php74/php-fpm.d/www.conf

編集前にバックアップを作成しておきます。

PHP 7.4の場合
cp /etc/opt/remi/php74/php-fpm.d/www.conf /etc/opt/remi/php74/php-fpm.d/www.conf.org

バックアップを作成したら、www.confの以下の項目を変更します。

user = apache
group = apache


listen = /var/opt/remi/php74/run/php-fpm/www.sock


;listen.owner = nobody
;listen.group = nobody
;listen.mode = 0660


listen.acl_users = apache
上記項目を以下のように変更します。
user = nginx      ; 変更
group = nginx     ; 変更


listen = /var/run/php-fpm/php-fpm.sock       ; 変更


;listen.owner = nobody
;listen.group = nobody
;listen.mode = 0660
listen.owner = nginx     ; 新規追加
listen.group = nginx     ; 新規追加

;listen.acl_users = apache    ; 無効化

ソケット通信用のsockファイルは、PHPのバージョンに依存しないように、/var/run/php-fpm/php-fpm.sockに変更しています。 また、デフォルトで/var/run/php-fpm/ディレクトリが無いので、ディレクトリを作成します。 ただし、CentOS7、8では、OS再起動時に/var/run/以下は毎回初期化されるので、起動時に自動でディレクトリを作成するための 設定ファイルを追加する必要があります。詳細は以下を参照。

listen.xxxの箇所はアクセス権の設定で、デフォルトでは POSIX ACLが有効になっています。 ここでは、POSIX ACLを無効にして、listen.ownser, groupで指定するように変更しています。

起動

CentOS 8の場合は、以下のコマンドで起動します。

systemctl start php[バージョン]-php-fpm
PHP 7.4の場合は、以下になります。
systemctl start php74-php-fpm

エラーが発生せずに正常に起動できたら、sockファイルのアクセス権限の確認をしておきます。 ユーザー、グループが、nginxでない場合は、www.confを修正して再起動します。

ls -l /var/run/php-fpm
total 0
srw-rw----. 1 nginx nginx 0 Oct  4 02:56 php-fpm.sock

自動起動の設定

CentOS 8の起動時に自動起動するように、以下を実行します。

systemctl enable php[バージョン]-php-fpm
PHP 7.4の場合は、以下になります。
systemctl enable php74-php-fpm