mod_pagespeed を用いて Apache の高速化(Ubuntu 上)
- mod_pagespeed のインストールと有効化(Ubuntu 上の Apache 2.4)
- Apache 標準モジュール(mod_deflate, mod_brotli, mod_expires, mod_http2)による高速化
mod_pagespeed は,Apache の出力する HTML, CSS, JavaScript, 画像をサーバ側で自動的に書き換え(最小化,結合,画像の再圧縮,キャッシュ期間の延長など),転送量と読み込み時間を削減するモジュールである。
現在の提供状況:Google による開発は 2020 年のバージョン 1.13.35.2 で終了し,Apache Incubator の PageSpeed プロジェクトは 2023 年に retire,GitHub のリポジトリ(apache/incubator-pagespeed-mod など)は 2025 年にアーカイブされた。dl-ssl.google.com で配布されている .deb は 2018 年のビルドであり,更新されていない。現在保守されているのは We-Amp による mod_pagespeed 1.15 で,Business Source License 1.1 のもとで配布され,商用の本番利用にはライセンスが必要である(未ライセンスでも動作し,レスポンスに X-PageSpeed-Warn: unlicensed ヘッダが付く)。
【関連する外部ページ】 https://modpagespeed.com/download/
前準備
Ubuntu のシステム更新
Ubuntu で OS のシステム更新を行うときは, 端末で,次のコマンドを実行する。これは,パッケージ情報を最新の状態に保ち,インストール済みのパッケージをセキュリティアップデートやバグ修正を含めて更新するためである。
# パッケージリストの情報を更新
sudo apt update
# インストール済みのパッケージを包括的に更新 (依存関係も考慮)
sudo apt full-upgrade
# カーネル更新等で実際に再起動が必要な場合のみ実行を推奨
# sudo shutdown -r now
Apache のインストール
端末で,次のコマンドを実行する。
# パッケージリストの情報を更新
sudo apt update
sudo apt -y install apache2
# 動作確認 (active (running) と表示されることを確認)
systemctl status apache2
mod_pagespeed のインストール(Ubuntu 上)
apt リポジトリを登録してインストールする。対応するのは Ubuntu 22.04, 24.04(amd64, arm64)である。 端末で,次のコマンドを実行する。
# 署名鍵とリポジトリ定義 (/etc/apt/sources.list.d/modpagespeed.list) を登録
curl -fsSL https://packages.modpagespeed.com/install.sh | sudo sh
# パッケージリストの情報を更新
sudo apt update
sudo apt -y install mod-pagespeed
sudo systemctl restart apache2
有効化と動作確認
インストール時にモジュールは有効化される。設定ファイルは /etc/apache2/mods-available/pagespeed.conf であり,ModPagespeed on で有効,ModPagespeed off で無効になる。
端末で,次のコマンドを実行する。
# モジュールの有効化 (すでに有効な場合はその旨が表示される)
sudo a2enmod pagespeed
# 設定ファイルの文法確認
sudo apache2ctl configtest
sudo systemctl restart apache2
# 動作確認: X-Page-Speed ヘッダが付いていれば動作している
curl -sI http://localhost/ | grep -i x-page-speed
Apache 標準モジュールによる高速化
mod_pagespeed を導入しない場合でも,Apache に同梱されているモジュールで転送量と待ち時間を削減できる。mod_deflate と mod_brotli はテキスト系コンテンツの圧縮,mod_expires はブラウザキャッシュの期間指定,mod_http2 は HTTP/2 による多重化を行う。mod_http2 は prefork MPM では動作しないため,event MPM に切り替える。 端末で,次のコマンドを実行する。
sudo a2enmod deflate
sudo a2enmod brotli
sudo a2enmod expires
sudo a2enmod headers
# HTTP/2 は event MPM が必要 (mod_php を使用している場合は php-fpm へ移行しておく)
sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo a2enmod http2
# 設定ファイルの文法確認
sudo apache2ctl configtest
sudo systemctl restart apache2
HTTP/2 を使うには,仮想ホストの設定(例:/etc/apache2/sites-available/000-default.conf)に次の行を追加する。h2 は HTTPS 用,h2c は平文用である。
Protocols h2 h2c http/1.1
設定後,端末で,次のコマンドを実行して確認する。
sudo systemctl restart apache2
# 圧縮の確認 (Content-Encoding: gzip または br が返る)
curl -sI -H "Accept-Encoding: gzip, br" http://localhost/ | grep -i content-encoding