Ubuntu 24.04でPHP 8.3を「最適に」構成する:サーバーを低速化させないための設定

Ubuntu tutorial - IT technology blog
Ubuntu tutorial - IT technology blog

よくある間違い:とりあえずインストールするだけの「インスタント」なPHP導入

sudo apt install php コマンドを入力して、ただ待っているだけではありませんか?それは自分自身でトラブルを招いている可能性があります。この方法では、デフォルトのリポジトリから古いバージョンのPHPがインストールされることが多く、Apacheの各プロセスにPHPコア全体をロードしてメモリを大量に消費する「負の遺産」であるmod_phpが同梱されることもあります。

以前、4GB RAMのVPSで、わずか20人の同時アクセスでフリーズしてしまうケースを対応したことがあります。原因はコードではなく、デフォルト設定で動作していたPHPにありました。キャッシュがなく、プロセス管理も非常に貧弱だったのです。PHP-FPMに切り替えて最適化を行った後、そのサーバーはCPU負荷を抑えたまま5倍のアクセスに耐えられるようになりました。

なぜサーバーが遅いのか?

システムパフォーマンスを蝕む3つの「サイレントキラー」があります:

  • 古い処理メカニズム: PHPを専用サービスであるPHP-FPMとして分離せず、モジュールとして実行している。
  • CPUリソースの浪費: PHPはインタープリタ言語です。OPcacheがないと、サーバーはリクエストごとにコードを再コンパイルする必要があり、処理能力の約30〜50%を無駄にします。
  • 環境の競合: Composerを誤った方法でインストールすると、ライブラリ更新時に権限エラー(Permission Denied)が頻発します。

リポジトリの選択:デフォルトは使わない

Ubuntu 24.04には、主に2つの選択肢があります。まだ旧OSを使用している場合は、Ubuntu Server 24.04 LTSへのアップグレードを済ませておくことが、最新のPHP 8.3を安定して動かす近道です。

  1. デフォルトリポジトリ: 安定していますが、バージョンが乏しく、更新が遅いです。
  2. Ondřej SurýのPPA: これはプロフェッショナルの必須選択肢です。Ondřej氏はDebian의 PHPパッケージを直接メンテナンスしている人物です。このPPAを使用すれば、コマンド一つでPHP 5.6から8.3までインストール可能です。もし将来的に標準リポジトリに戻したい場合は、PPA-Purgeを使用してパッケージを安全にダウングレードすることが可能です。

本番環境向けPHP 8.3の最適インストール手順

以下は、Laravel、WordPress、Symfonyなどを最高のパフォーマンスで動作させるための構築手順です。

ステップ1:Ondřej SurýのPPAを追加

まず、システムを更新し、最新のPHP 8.3を取得するためのリポジトリを追加します。パッケージ管理をより効率化したいなら、NalaをUbuntuにインストールして使用するのもおすすめです。

sudo apt update && sudo apt upgrade -y
sudo apt install -y software-properties-common
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update

ステップ2:PHP 8.3と必須拡張機能のインストール

汎用的なphpパッケージはインストールしないでください。WebサーバーからPHP処理を分離するために、明示的にphp8.3-fpmをインストールします。また、Caddyでリバースプロキシを構築すれば、HTTPS化とPHP-FPMの連携も非常にスムーズに行えます。

sudo apt install -y php8.3-fpm php8.3-cli php8.3-mysql php8.3-zip php8.3-gd php8.3-mbstring php8.3-curl php8.3-xml php8.3-bcmath php8.3-intl

注意: bcmathintl 拡張機能は、Laravelや高い計算精度を必要とする決済システムを扱う場合には必須です。

ステップ3:負荷に耐えるためのPHP-FPM微調整

デフォルト設定は非常に控えめです。RAMを最大限に活用するために、プール設定ファイルを開きます:

sudo nano /etc/php/8.3/fpm/pool.d/www.conf

2GB〜4GB RAMのVPSの場合、以下の設定値を参考にしてください:

pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 10
pm.max_requests = 500

ヒント: 各PHP-FPMプロセスは通常30〜50MBのRAMを消費します。安全な max_children の計算式は「(合計RAM – システム用1GB) / 50MB」です。

ステップ4:OPcacheの有効化 – レスポンス速度の「ブースト」

これはTTFB(Time to First Byte)を短縮するために最も重要なステップです。php.ini ファイルを開きます:

sudo nano /etc/php/8.3/fpm/php.ini

[opcache] セクション内のパラメータを探して修正します(行頭の ; を削除するのを忘れないでください):

opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.validate_timestamps=0 # 開発環境の場合は1に設定してください

その後、サービスを再起動して適用します:

sudo systemctl restart php8.3-fpm

ステップ5:Composer 2.xの正しいインストール

apt install composer コマンドのことは忘れてください。古いバージョンがインストールされることが多いためです。公式スクリプトを使用して常に最新の2.xを導入しましょう。旧バージョンよりライブラリのダウンロード速度が3倍速くなります。

curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
sudo chmod +x /usr/local/bin/composer

インストール後のセキュリティ強化

以下の2つの小さな、しかし非常に重要な作業を怠らないでください:

  1. 情報漏洩の防止: php.ini 内の expose_php = OnOff に変更します。これにより、ハッカーが特定のPHPバージョンを特定して脆弱性を突くのを防げます。
  2. 厳格な権限設定: PHP-FPMが www-data ユーザーのみで実行されるようにします。絶対に root 権限でPHPを実行しないでください。

さらに、Ubuntuのセキュリティパッチ自動適用を設定して、PHPやシステム全体の安全性を常に最新の状態に保つようにしましょう。

PHPの最適化は、ウェブサイトをよりスムーズに動作させるだけでなく、月々のVPS費用を節約することにもつながります。設定後に 502 Bad Gateway エラーが発生した場合は、/var/log/php8.3-fpm.log のログファイルを確認してください。成功を祈ります!

Share: