doudonn WEB制作やサーバーの話とかいろいろ

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

  doudonn 更新日:
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ベンチなどして様子を見ながら限界に挑戦を。

サーバーの関連記事

記事一覧はこちら:サーバー

管理人について
doudonn
名前:doudonn(どうどん)
ひたすらWEB制作な人。
一応社長です。音ゲー好き

プロフィール
お知らせ

2022年11月30日に全記事削除しました。
無駄にページ表示速度にこだわってます。

役立ちサイト
wiki

プライバシーポリシー・広告について


© 2022-2025 doudonn All Rights Reserved.