Ubuntu 22.04.1 LTSにPHP-FPMをインストール、php.ini、www.confの設定方法
Ubuntu 22.04.1 LTSでNginx&PHP-FPMを使う!
ここは特に難しくなく、インストールは普通にやればOKです。
悩むのはモジュールと各種設定だろう。
まとめてインストールするのが効率的ですが、個別に解説します。
Nginxのインストール方法の解説はこちら
・Ubuntu 22.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のインストール>
apt -y install php8.2-fpm
※バージョンを指定してインストールすると確実
これで最新版がインストールされます。
2023年1月時点では「PHP 8.2.1 (fpm-fcgi)」でした。
同時にPHPもインストールされます。
こちらも最新版「PHP 8.2.1 (cli)」です。
<バージョンの確認方法>
php -v
これで表示されるバージョンがPHPもPHP-FPMも共通です。
「/etc/php」を見てもわかります。
2、PHPのモジュールのインストール
基本的には自分が必要なモジュールだけをインストールします。
※バージョンを入れた方が確実
<入れた方が良いもの>
apt -y install php8.2-curl php8.2-zip php8.2-mbstring php8.2-intl php8.2-imagick
<データベースの操作をするなら必須>
apt -y install php8.2-mysql
自分の場合はとりあえずこれでやっています。
後から自由に追加できるので、もし足りなかっても問題は無い。
3、php.iniの設定
「PHP」と「PHP-FPM」と別々に分かれています。
それぞれ編集してください。
<PHP>
/etc/php/8.2/cli/php.ini
<PHP-FPM8.2>
/etc/php/8.2/fpm/php.ini
<主な変更項目(PHP側のデフォルト値)>
max_execution_time = 30
max_input_time = 60
memory_limit = -1
post_max_size = 8M
upload_max_filesize = 2M
max_file_uploads = 20
<自分の場合>
max_execution_time = 120
max_input_time = 90
memory_limit = 128M
post_max_size = 10M
upload_max_filesize = 10M
max_file_uploads = 20
ここは自由に設定ください。
4、PHP-FPMの設定
<設定ファイル>
/etc/php/8.2/fpm/pool.d/www.conf
<デフォルト値>
[www]
user = www-data
group = www-data
listen = /run/php/php8.2-fpm.sock
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
<自分の場合(さくらVPSメモリ1Gプラン)>
[www]
user = nginx
group = nginx
listen = /run/php/php8.2-fpm.sock
listen.owner = nginx
listen.group = nginx
pm = dynamic
pm.max_children = 6
pm.start_servers = 3
pm.min_spare_servers = 2
pm.max_spare_servers = 4
どの設定が一番良いかはよくわかっていない。
CPUコア数より気持ち多めにしています。
(これがメモリ的に限界)
5、Nginxの設定
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
「fastcgi_pass」にPHP-FPMの設定ファイルにあるパスを記載するだけ。
6、以上です
PHP-FPMのプロセス量の設定が一番迷うところだろう。
ある人は「CPUコア数以上は無駄」と言うし、
ある人は「メモリの限界まで使う」と言う。
個人的にはメモリの限界まで使うのが正しいと思っています。
エックスサーバーは数百個起動しているので、
CPUコア数以上は無駄なんてことは無さそう(自分だけで50個くらい使ってた)。
そもそも、デフォルト設定が「5」です。
PHP-FPMのメモリ使用量ですが、
ワードプレス等メモリを多く使う場合はプロセス1個あたり100MB以上に増える。
自分の軽いPHPシステムでは1個あたり40MBほどです。
というのもあり、topコマンドで実際に使われているメモリ量を見て、それで判断したい。
「この設定が最強!」とかいうのは無いです。理屈をわかっていない人しか言えない。
少な目に設定して、abベンチなどして様子を見ながら限界に挑戦を。