「Apacheは遅い」という誤解
こんにちは!「リナックス先生」です。
今日は、Webサーバーの老舗「Apache(アパッチ)」で動かしているWordPressの高速化について、徹底的にメスを入れます。
先生、僕のVPS、ApacheでWordPressを動かしてるんですけど、最近すごく重いんです…。
ネットで調べたら「今はNginx(エンジンエックス)の時代だ!Apacheはオワコン!」って書かれてて。
やっぱりサーバーを作り直さないとダメですか?
あきらめるのは早いわコウ君。
Apacheが遅いと言われる原因の9割は、「デフォルト設定(Preforkモード)」のまま使っているからよ。
最新の技術(Event MPM + PHP-FPM)を導入すれば、ApacheでもNginxに迫る爆速環境は作れるの。今回はUbuntuとAlmaLinux、両方の手順を教えるわ!
1. なぜApacheのデフォルトは遅いのか?
チューニングを始める前に、敵を知りましょう。
多くのLinuxディストリビューションでApacheをインストールすると、デフォルトで「Prefork(プリフォーク)」という動作モードが選ばれることが多いです。
Preforkの弱点
- メモリ食い: 1つのアクセスに対して、Apacheのプロセスを丸ごと1つコピーして対応します。アクセスが増えるとメモリが枯渇します。
- PHPが一体化: Apacheの中にPHPの機能(mod_php)が埋め込まれています。画像1枚を表示するだけでも、重たいPHPエンジンが動いてしまいます。
つまり、「無駄に重い荷物を背負って走っている状態」なのです。
これを解消するのが、今回導入する「Event MPM」と「PHP-FPM」です。
2. 【最重要】MPM Event + PHP-FPM への移行
ここが今回のハイライトです。
Apacheの動作モードを「スレッドベース(Event)」に変え、PHP処理をApacheから切り離して専門部隊(PHP-FPM)に任せます。
OSによってコマンドが異なるので、お使いの環境に合わせて進めてください。
※注意: 設定ファイルを書き換えるので、必ずバックアップを取ってから作業してね!
パターンA:AlmaLinux / Rocky Linux / CentOS (RHEL系)
Step 1: PHP-FPMのインストール
dnf install php-fpm systemctl enable --now php-fpm
Step 2: MPMの切り替え
vi /etc/httpd/conf.modules.d/00-mpm.conf
mpm_prefork をコメントアウト(#)し、mpm_event のコメントアウトを外します。
#LoadModule mpm_prefork_module modules/mod_mpm_prefork.so LoadModule mpm_event_module modules/mod_mpm_event.so
Step 3: PHP処理先の設定
vi /etc/httpd/conf.d/php.conf
以下の記述があるか確認し、なければ追記します(mod_phpの記述がある場合は無効化してください)。
<FilesMatch \.php$>
SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
</FilesMatch>
Step 4: Apache再起動
systemctl restart httpd php-fpm
パターンB:Ubuntu / Debian系
Ubuntuではコマンドを使ってモジュールを切り替えます。非常に簡単です。
Step 1: PHP-FPMのインストール
# PHPのバージョンに合わせてインストール(例:PHP 8.1の場合) apt install php8.1-fpm
Step 2: モジュールの無効化と有効化
# 従来のPreforkとmod_phpを無効化 a2dismod mpm_prefork a2dismod php8.1 # Event MPMとFastCGIプロキシを有効化 a2enmod mpm_event a2enmod proxy_fcgi setenvif # PHP-FPM設定を有効化 a2enconf php8.1-fpm
Step 3: Apache再起動
systemctl restart apache2
3. HTTP/2 の有効化
次に通信プロトコルの最適化です。画像などの並列読み込みが可能になり、体感速度が劇的に上がります。
※SSL(HTTPS)化が必須条件です。
AlmaLinux (RHEL系) の場合
設定ファイル(/etc/httpd/conf/httpd.conf や ssl.conf)を開き、以下の行を追加します。
Protocols h2 http/1.1
その後、systemctl restart httpd で再起動。
Ubuntu の場合
コマンド一発で有効化できます。
a2enmod http2 systemctl restart apache2
4. コンテンツ圧縮 (Brotli) とキャッシュ
Gzipよりも高圧縮な「Brotli(ブロトリ)」を有効化し、.htaccess でブラウザキャッシュを設定します。
Brotliモジュールの確認
- AlmaLinux:
dnf install mod_brotliが必要な場合があります。 - Ubuntu:
a2enmod brotliで有効化し、Apacheを再起動します。
.htaccess の設定(共通)
ドキュメントルート(/var/www/html 等)にある .htaccess に以下を追記します。
<IfModule mod_brotli.c> AddOutputFilterByType BROTLI_COMPRESS text/html text/plain text/xml text/css text/javascript application/javascript </IfModule> <IfModule mod_expires.c> ExpiresActive On ExpiresDefault "access plus 2 weeks" ExpiresByType image/jpeg "access plus 1 months" ExpiresByType text/css "access plus 1 months" </IfModule>
5. PHP自体の高速化 (OPcache)
PHPのコンパイル結果をメモリに保存する「OPcache」を導入します。
インストールコマンド
- AlmaLinux:
dnf install php-opcache - Ubuntu:
apt install php8.1-opcache(バージョンに合わせる)
設定確認 (php.ini または opcache.ini)
以下の設定になっているか確認しましょう。
opcache.enable=1 opcache.memory_consumption=128 opcache.max_accelerated_files=10000 opcache.validate_timestamps=1
設定後は必ずApacheとPHP-FPMを再起動してください。
まとめ:Apacheでも「爆速」は作れる
お疲れ様でした!
今回のチューニングを実施したことで、あなたのApacheサーバーは:
- Event MPM + PHP-FPM でメモリ効率と並列処理能力が向上し、
- HTTP/2 で通信がスムーズになり、
- Brotli圧縮 で転送量が減り、
- OPcache でPHP実行速度が上がりました。
先生、すごいです!
Ubuntuで試しましたけど、コマンド数行打っただけでPageSpeed Insightsのスコアが爆上がりしました!
Nginxに入れ替えなきゃいけないと思ってたけど、Apacheのままで十分ですね!
ええ、それがインフラエンジニアの腕の見せ所よ。
OSごとの作法を守って適切に設定すれば、Apacheは最強のWebサーバーになるの。
自信を持って運用しなさい!
▼高速チューニングの効果を最大化するVPS
いくら設定を最適化しても、サーバー自体のCPU性能やディスクI/O(書き込み速度)が低いと限界があります。Apache + WordPressを高速に動かすために設計された、NVMe SSD搭載の推奨VPSはこちらです。


コメント