PHP(LAMP環境)について情報アップデートしてみた
1. はじめに
ウェブアプリケーションのプラットフォームというと、LAMP環境が一般的ですが、一昔前とは色々変わっているようなので、情報アップデートのために調べてみました。と言っても今回は最後のPのPHPにフォーカスしてみます。
※他は次を想定: [L] Alma linux, [A] Apahce, [M] MariaDB
2. mod_phpとphp-fpm
以前までWeb(Apache)でPHPを利用する場合、mod_phpというApacheモジュールを利用していましたが、最近ではphp-fpmというものに変わっており、各ディストリビューションのデフォルト設定もこちらを使うように変わっているようです。
| mod_php | Apacheのモジュールとして動作し、PHPはApahceのプロセスが処理 |
|---|---|
| php-fpm | 公式の説明はこちら。 公式あるあるで分かりづらいですが、ざっくりいうとPHPのアプリケーションサーバ ※Javaで言うところのTomcatみたいなもん? |
その他、色々比較
| mod_php | php-fpm | |
|---|---|---|
| デフォルト設定 | RHEL7迄 | 左記以降 |
| スレッド対応 | 非対応 | 対応 |
| MPMとの関係※ | prefork | event |
| 処理プロセス | Apache | php-fpm |
| メモリ使用 | 大 | 小 |
| 用途想定 | 個人・小規模 | 企業・大規模 |
※MPM(Multi-Processing Module)とはApacheがリクエストを処理する方式定義
| mod_php | php-fpm | |
|---|---|---|
| Server API | Apache 2.0 Handler | FPM/FastCGI |
設定は下記で確認できます。
| /etc/httpd/conf.d/php.conf | |
| mod_php | <FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch> |
| php-fpm | <FilesMatch \.(php|phar)$> SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost" </FilesMatch> |
4. けっきょくどっち?
調べてみると、小規模←→大規模とか、スレッド処理は注意が必要とかあるけど、デフォルト設定がスレッド処理の方に移行してることと、リソースオンデマンド課金な時代だとよりメモリ使わない方が幸せなので、これからはおとなしく”php-fpm”を使ったほうが良いのかなぁ?
5. さいごに
運用する上で注意すること!(ここ一番大事)
PHPの動作設定を行う”php.ini”ファイルについて、これを修正した際に反映させるには、mod_phpの時は処理をApacheがするのでApacheの再起動でしたが、php-fpmを利用してる場合はphp-fpmの再起動が必要です。
これ知らないと設定がいつまでも反映されず、「接続先間違った?」「selinux?」「なんかやられちゃってる?」とプチパニックになるので注意しましょう!w


コメント
コメントを投稿