Ubuntu 24.04 LTSにPHP-FPM8.4をインストール、php.ini、www.confの設定方法


Ubuntu 24.04 LTSでNginx&PHP-FPMを使う!
ここは特に難しくなく、インストールは普通にやればOKです。
悩むのはモジュールと各種設定だろう。
まとめてインストールするのが効率的ですが、個別に解説します。
Nginxのインストール方法の解説はこちら
・Ubuntu 24.04.1 LTSに最新版Nginxをインストールする方法
1、PHP-FPMのインストール
<最新版をインストールするための下準備>
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update
この3つを実行してください。
<PHP-FPMのインストール>
sudo apt -y install php8.4-fpm
※バージョンを指定してインストールすると確実
これで最新版がインストールされます。
2025年1月29日時点では「PHP 8.4.3 (fpm-fcgi)」でした。
同時にPHPもインストールされます。
こちらも最新版「PHP 8.4.3 (cli)」です。
<バージョンの確認方法>
php -v
php-fpm8.4 -v
これで表示されるバージョンがPHPもPHP-FPMも共通です。
「/etc/php」を見てもわかります。
2、PHPのモジュールのインストール
基本的には自分が必要なモジュールだけをインストールします。
※バージョンを入れた方が確実
<入れた方が良いもの>
sudo apt -y install php8.4-curl php8.4-zip php8.4-mbstring php8.4-intl php8.4-imagick php8.4-mysql php8.4-xml php8.4-gd
<データベースの操作をするなら必須>
sudo apt -y install php8.4-mysql
自分の場合はとりあえずこれでやっています。
後から自由に追加できるので、もし足りなかっても問題は無い。
3、php.iniの設定
「PHP」と「PHP-FPM」と別々に分かれています。
それぞれ編集してください。
※「opcache」は自分のサイトに合わせて設定を。
理解せずコピペでは絶対にダメです。
<PHP>
/etc/php/8.4/cli/php.ini
<PHP-FPM>
/etc/php/8.4/fpm/php.ini
<主な変更項目(デフォルト値)>
[PHP]
post_max_size = 8M
upload_max_filesize = 2M
max_file_uploads = 20
[Date]
;date.timezone =
[mbstring]
;mbstring.language = Japanese
;mbstring.internal_encoding =
;mbstring.http_input =
;mbstring.http_output =
;mbstring.encoding_translation = Off
;mbstring.detect_order = auto
;mbstring.substitute_character = none
[opcache]
;opcache.enable=1
;opcache.enable_cli=0
;opcache.memory_consumption=128
;opcache.interned_strings_buffer=8
;opcache.max_accelerated_files=10000
;opcache.validate_timestamps=1
;opcache.revalidate_freq=2
;opcache.save_comments=1
;opcache.enable_file_override=0
;opcache.blacklist_filename=
<自分の場合(当サイトの場合)>
[PHP]
post_max_size = 10M
upload_max_filesize = 10M
max_file_uploads = 100
[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = UTF-8
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none
[opcache]
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=160
opcache.interned_strings_buffer=96
opcache.max_accelerated_files=10000
opcache.validate_timestamps=1
opcache.revalidate_freq=120
opcache.save_comments=0
opcache.enable_file_override=1
opcache.blacklist_filename=/etc/php/8.4/fpm/opcache.blacklist //ファイルは自分で作成
ここは自由に設定ください。
4、PHP-FPMの設定
<設定ファイル>
/etc/php/8.4/fpm/pool.d/www.conf
<デフォルト値>
[www]
user = www-data
group = www-data
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 5
<自分の場合(さくらVPSメモリ2Gプラン CPU3コア)>
[www]
user = nginx
group = nginx
listen.owner = nginx
listen.group = nginx
pm = static
pm.max_children = 6
「static」でプロセスの数を固定にしています。
最低でもCPUコアの2倍。理想は5倍のようです。
「1プロセスに1コアしか使えないからコア数以上の設定は無駄」という主張は誤り。
I/O待ちの時に他のプロセスを使うため、コア数より多い方が良い。
5、Nginxの設定(phpの部分のみ)
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
「fastcgi_pass」にPHP-FPMの設定ファイルにあるパスを記載するだけ。
6、以上です
opcacheとプロセス数の設定が肝心。
opcacheはサイトに合わせて設定しないと効果を発揮できない。
インクルード等で文字数が多い場合は「opcache.interned_strings_buffer」は多量に使う。
デフォルトの8MBでは全然足りません。
とりあえず稼働してみて、メモリ使用量を確認しながら設定を。
プロセス数はコア数の2倍にしておけばとりあえずOKと思う。
I/O待ちと同時アクセスが多いなら5倍など。
メモリとの相談です。
PHP-FPMのメモリ使用量ですが、
ワードプレス等メモリを多く使う場合はプロセス1個あたり100MB以上に増える。
自分の軽いPHPシステムでは1個あたり40MBほどです。
というのもあり、topコマンドで実際に使われているメモリ量を見て、それで判断したい。
「この設定が最強!」とかいうのは無いです。理屈をわかっていない人しか言えない。
少な目に設定して、abベンチなどして様子を見ながら限界に挑戦を。