25年程前に独学でWebアプリを弄り始めたころ
Webアプリ開発をするならこれからはPHP3だよ
という流れでした。
当時CGI開発言語として良く使われていたPerlが癖のある言語なので
書いた人にしか読めないんじゃないの?ってなりがちだったのも
PHPの人気を加速させた要因だと思います。
まあ後発ですしWebアプリ用言語なので当たり前だと言えば当たり前。
当時PHPはApacheモジュールとして読み込ませることができ
そうすると同一プロセスとして実行させられるので
処理速度が速くなることがメリットと言われていました。
デメリットとしては同じプロセスとして動作するので
当然実行ユーザーもApacheのそれと同じになり
権限設定が少し緩くなることでした。
CGIの方が実行ユーザーの設定に自由度がありセキュアにできるが
実行モジュールのほうが早い。
この両方の良いとこどりな仕組みとして考えられたのがFastCGI。
CGI用のプロセスをあらかじめ実行準備させておくことで
遅いというデメリットが克服されました。
ここ数年は実行環境を自分で作ることもなく
ふと気づくと php-fpm なる謎のプロセスが存在していました。
その存在に最初に気が付いたのは
Webサーバー再起動したはずなのに弄ったPHP設定が反映されなかった時です。
調べていたらphp-fpmなるモードで動作しているらしい。
それを再起動させてみたら設定が反映されたので
へーこの環境では別プロセスとして動いているんだ、CGIみたいだな~と。
その後調べたら php-fpm とは
PHP FastCGI Process Manager とのこと。
CGIみたいじゃなくてCGIだったんですね。
ちなみにfpm用の設定ファイルでuserやgroupの設定ができます。
PHPの3から始めて今のメジャーバージョンは8。
そろそろ9がでてくるとかこないとか。
つい先日 php-fpm の環境下で
実行ユーザーの権限がらみで躓いた
シーラカンスエンジニアの独り言でした。
PHPならシーラカンスじゃなくてマンモスかな。