2026年10月4日
2026年10月4日
WordPressのApache設定を最適化する方法
はじめに
WordPressサイトのパフォーマンスとセキュリティを向上させるためには、サーバー設定を最適化することが重要です。ApacheはWebサーバとして広く使用されており、その設定を最適化することで、サイトのロード速度やアクセス数に対する耐久性が向上します。
症状・背景
このテーマが必要になる主な場面:
- サイトのロード時間が長い
- ユーザーからのアクセス数が増えた場合に性能が低下する
- 通信エラーが多くなる
- セキュリティ上の問題が発生する可能性がある
手順・設定方法
ステップ1: Apacheモジュールの有効化
# mod_deflateでコンテンツ圧縮を有効にする
a2enmod deflate
# モジュールが正しく読み込まれていることを確認する
apachectl -M | grep deflate
ステップ2: .htaccessファイルの設定
# 静的ファイルのキャッシュ制御を有効にする
echo "Header set Cache-Control \"max-age=31536000, public\"" >> .htaccess
echo "ExpiresActive On" >> .htaccess
echo "ExpiresDefault A2903040" >> .htaccess
# 画像等のキャッシュ期間を設定する
echo "<FilesMatch \\.(ico|pdf|flv)$>" >> .htaccess
echo "Header set Cache-Control \"max-age=2903040, public\"" >> .htaccess
echo "</FilesMatch>" >> .htaccess
ステップ3: MultiViews機能の無効化
# MultiViews機能を無効にするために、DocumentRootディレクトリにデフォルトドキュメントが存在する場合のみ許可
sed -i 's/Options Indexes FollowSymLinks/Options -MultiViews Indexes FollowSymLinks/g' /etc/apache2/sites-available/000-default.conf
# ファイルの内容を確認し、変更が適切に行われていることを確認
cat /etc/apache2/sites-available/000-default.conf | grep Options
ステップ4: PHP設定とApache設定の統合
# php.iniでタイムアウト時間を長く設定する
echo "max_execution_time = 300" >> /etc/php/7.4/apache2/php.ini
# Apacheの設定ファイルを更新し、PHPのインクルードパスを追加
sed -i 's^<Directory /var/www/html/>^<Directory /var/www/html/>\n\tIncludeOptional /etc/php/7.4/apache2/*.ini^g' /etc/apache2/sites-available/000-default.conf
# ファイルの内容を確認し、変更が適切に行われていることを確認
cat /etc/apache2/sites-available/000-default.conf | grep IncludeOptional
注意事項
- サーバー設定の変更は、サイトへの影響を最小限に抑えるために慎重に行うべきです。
- パフォーマンスとセキュリティのバランスを見つけることが重要です。
- Apacheの最新版を使用することを強く推奨します。
- すべての設定変更後にはApacheが正しく動作していることを確認するため、
systemctl restart apache2コマンドで再起動を行ってください。
まとめ
1. mod_deflate: コンテンツ圧縮を有効にすることで、データ転送量の削減とパフォーマンス向上が可能になります。
2. キャッシュ制御: .htaccessファイルで静的コンテンツのキャッシュ期間を設定し、ブラウザやCDNからのリクエストを減らすことができます。
3. MultiViews無効化: ファイル名の自動推測機能はセキュリティ上のリスクがあり、無効化することでサイトの安全性が向上します。
4. PHP設定とApache統合: PHPの設定ファイルとApacheの設定を適切に連携させることで、より効率的なサーバーレベルでの最適化が可能になります。
5. 再起動確認: 各ステップ終了後にApacheを再起動し、設定が正しく反映されていることを確認してください。
関連記事: