LEMP(Linux+Nginx+MySQL+PHP)環境の構築(2)

Nginx には php-fpm(FastCGI Process Manager) を入れる必要があるようです。以下で php 8.1.2 が入りました。

$ apt install php-fpm

さて Nginx をインストールすると、/var/www/html 下が公開フォルダのデフォルトになります。
この中にサブフォルダを2つつくることにしました。
1つが開発する Web システム用(dataweb とします)、もう1つが PhpMyAdmin 用(phpmyadmin)です。

インストール直後は /etc/nginx/sites-available/default に初期設定がなされているので、これを書き換えて PHP 対応にします。
書き換え箇所を表にまとめます。

元の値書き換え後
root /var/www/html;root /var/www/html/dataweb;
index index.html index〜(以下略)〜index index.html index.htm index.php;
server_name _;server_name localhost;
# pass PHP scripts to FastCGI server 部分コメントを外して有効化。但し
fastcgi_pass unix:/run〜 行の php 7.4 を 8.1 に。
fastcgi_pass 127.0.0.1:9000; 行はコメントのまま。(*1)
# deny access to .htaccess files,〜 部分コメントを外して有効化。(*2)

(*1) (*2) 部分は以下のようになります。

(*1) は、拡張子 .php の URL に対して、php-fpm で処理させるための設定です。
Nginx と php-fpm 間の通信に unix socket という仕組みを利用しており、この /run/php/php8.1-fpm.sock が双方が接続する定義となります。php-fpm 側の定義は、/etc/php/8.1/fpm/pool.d/www.conf 内で同じ名前が確認できます。

(*2) は、Nginx が Apache のドキュメントルート(var/www/html)を乗っ取った場合に、Apache のアクセス制御用ファイルである .htaccess をブラウザからアクセスできることのないようにガードします。
今回は Apache をインストールしておらず、ファイルも存在していませんが、念の為対応しておくことにしました。

さて、nginx -t で設定ファイルに異常がないか確認し、OK であれば restart します。

$ nginx -t
$ systemctl restart nginx

/var/www/html/dataweb に info.php を作成し、ブラウザから http://localhost/info.php で確認します。

$ echo "<?php phpinfo() ?>" > /var/www/html/dataweb/info.php