Apache2+PHP(CGI)の話。
バーチャルホストで相乗りしてるWebサーバなので、PHPはCGIでsuexecして動かしているのだけど、WordPressベースのページは応答に500msかかったりして、あまり良くない感じ。そこでPHP-FPMの導入を検討することになった。
インストールは簡単でphp-fpmを入れたらよい。あとは要りそうなモジュールを有効にしておく。
sudo a2enmod actions fcgid alias proxy_fcgi
次に、プールの設定をする。ここではexample.comの設定をユーザexampleで実行しているものとする。
/etc/php/8.3/fpm/pool.dに、www.confというのがあるので、それをコピーしてexample.confというのを作り、以下のように修正する。
; pool name ('www' here)
[wwwexample]
(snip)
user=www-dataexample
group=www-dataexample
(snip)
listen = /run/php/php8.3-fpm.sockphp8.3-fpm-example.sock
これで修正終わり。php8.3-fpmを再起動する。
次に、Apache2のバーチャルホストの設定に以下を追加する。
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php/php8.3-fpm-example.sock|fcgi://localhost"
</FilesMatch>
これで修正終わり。apache2を再起動する。
うまくいけばこれだけでPHPはPHP-FPMを使うようになる。冒頭に500msかかっていたと書いたが、同じページがPHP-FPM有効だと60msとかで表示できるようになり、文字通り桁が違う。