#背景
Nginx で PHP を動かすには、php-fpm をインストールする所までは覚えていても、その後の設定の書き方を毎回すっかり忘れているのでメモ。
モジュールのインストールは終わっている前提で、その後の設定部分だけを記述しています。
環境
- Amazon Linux 2
- PHP 7.2.16 (php -v)
- nginx/1.12.2 (nginx -v)
#設定
nginx 側の設定
/etc/nginx/nginx.conf を編集する必用がある。
スタンザが http → server (80と443)→ location の階層構造になっている。
server の 80 と 443 の両方に php 用の location スタンザを追加しておく(使うほうだけでも良いけど)
nginx.conf
location ~ \.php$ {
root /usr/share/nginx/html; # ここは nginx の / ディレクトリにしておく。nginx の / から下の階層の全てでPHPが実効できるようになる。
# root /var/www;
# fastcgi_pass 127.0.0.1:9000; # これは php-fpm の設定に依存する。自分は使わない派。ネットの記事は使っているものが多い。
fastcgi_pass unix:/run/php-fpm/www.sock; # こちら派。パスの設定は、php-fpm 側の記述に unix: を付けたものになる。
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include fastcgi_params;
}
編集が完了したら再起動
sudo nginx -s reload
php-fpm 側の設定
/etc/php-fpm.d/www.conf を編集する必用がある
/etc/php-fpm.d/www.conf
; RPM: apache user chosen to provide access to the same directories as httpd
user = nginx # nginx にする
; RPM: Keep a group allowed to write in log dir.
group = nginx # nginx にする
<省略>
; Note: This value is mandatory.
listen = /run/php-fpm/www.sock # これを使って通信するので、この値をnginx.confで指定する。
<省略>
; mode is set to 0660
listen.owner = nginx # nginx にする
listen.group = nginx # nginx にする
編集が完了したら再起動
sudo service php-fpm restart
PHP動作確認用のいつものFile
動作確認用の phpinfo.php を作成して、nginx のルートに配置する。
この例では nginx ルートは以下なので以下のルートにテスト用 php を配置
/usr/share/nginx/html
phpinfo.php
<?php phpinfo(); ?>
nginx ルートの www.example.com/phpinfo.php にアクセスすると、おなじみの以下の画面が見えればセットアップは完了です。