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がリクエストを処理する方式定義


3. どちらで動作してるか確認するには?


Apacheがどちらで動作してるか確認するには、phpinfo で確認できます。

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

コメント

このブログの人気の投稿

ProxmoxでLet's Encryptを使用した証明書セットアップをやってみた

AIと共に「考える」エンジニアに!

ルーティングって何で必要で、何してるの?を React Routerで理解する