Apache HTTP Serverは世界中で広く使用されているWebサーバーですが、新バージョンにアップデートした際に動作不良や互換性の問題が発生することがあります。その際、迅速に旧バージョンへロールバックすることで、システムの安定性を回復させることが可能です。
本記事では、Apache HTTP Serverのロールバックが必要となる典型的なケースから、旧バージョンの入手方法、ロールバック手順、設定ファイルの復元、エラーチェック方法までを詳しく解説します。
また、バージョン固定の方法や自動更新の無効化設定など、トラブルを未然に防ぐ手法についても触れ、安心してApacheを運用できるようになることを目指します。
Apache HTTP Serverのロールバックが必要な状況
Apache HTTP Serverのロールバックは、新バージョンへのアップデート後に以下のような問題が発生した際に必要となります。
互換性の問題
新バージョンでは、モジュールやプラグインの非互換性が発生することがあります。これにより、既存のWebアプリケーションが正常に動作しなくなる可能性があります。
パフォーマンス低下
新バージョンのApacheがシステムリソースを過度に消費し、応答速度が遅くなる場合があります。特に大規模なトラフィックを処理している環境では、パフォーマンス低下が深刻な問題となります。
バグや不具合の発生
新バージョンには未発見のバグが含まれる可能性があり、Webサイトが不安定になったり、エラーが頻発する場合があります。このような場合、安定した旧バージョンへ戻すことで問題を回避できます。
セキュリティポリシーへの影響
一部の新機能がセキュリティポリシーに反する場合があります。セキュリティ基準を満たさない場合、ロールバックが求められることがあります。
ロールバックは、安定性を維持しつつ迅速に問題を解決する手段として重要です。次のセクションでは、旧バージョンのApacheを安全にダウンロードする方法について説明します。
旧バージョンのダウンロード方法と注意点
公式サイトからのダウンロード
Apache HTTP Serverの旧バージョンは、公式のApacheアーカイブサイトから入手できます。以下の手順で、安全に旧バージョンをダウンロードしましょう。
ダウンロード手順
- Apache公式アーカイブサイト(https://archive.apache.org/dist/httpd/)にアクセスします。
- バージョン一覧から、必要な旧バージョンのディレクトリを選択します。
- 該当バージョンの
httpd-x.x.x.tar.gz
または.zip
ファイルを選び、ダウンロードします。
注意点
1. セキュリティリスクへの対処
旧バージョンは最新のセキュリティパッチが適用されていない可能性があります。インストール後は、必要に応じてパッチを手動で適用するか、ファイアウォールなどでセキュリティを強化しましょう。
2. ダウンロード元の確認
非公式のミラーサイトやサードパーティサイトからのダウンロードは避け、必ずApache公式サイトから取得してください。改ざんやマルウェアのリスクを防げます。
3. バージョンの選定
新しいバージョンでの不具合が発生した場合でも、必要最低限のセキュリティが確保された「サポート終了前のバージョン」を選択することが重要です。特にLTS(Long Term Support)バージョンが存在する場合は、それを選びましょう。
次のセクションでは、ロールバック前に現在の環境をバックアップする方法を解説します。
ロールバック前の環境バックアップ手順
Apache HTTP Serverのロールバックを行う前に、現在の環境を完全にバックアップしておくことは非常に重要です。これにより、万が一ロールバック中に問題が発生しても、元の状態に戻せる安全策となります。
バックアップする対象
1. Apacheの設定ファイル
- メイン設定ファイル:
/etc/httpd/conf/httpd.conf
または/usr/local/apache2/conf/httpd.conf
- 仮想ホスト設定:
/etc/httpd/conf.d/*.conf
- SSL設定:
/etc/httpd/conf.d/ssl.conf
など
2. サイトデータとドキュメントルート
- 通常、
/var/www/html/
や/srv/http/
などのドキュメントルート配下に存在するコンテンツをバックアップします。
3. モジュールと追加パッケージ
- インストール済みのApacheモジュール一覧を保存します。
- コマンド例:
apachectl -M > installed_modules.txt
4. ログファイル
/var/log/httpd/
や/usr/local/apache2/logs/
内のアクセスログとエラーログをコピーします。
cp -r /var/log/httpd/ /backup/apache_logs/
バックアップ方法
1. 設定ファイルの圧縮とコピー
tar -czvf /backup/apache_config_backup.tar.gz /etc/httpd /var/www/html
2. スナップショットの作成
- 仮想環境やクラウド環境では、システム全体のスナップショットを作成しておくことが推奨されます。
3. データベースのバックアップ(必要に応じて)
- Apacheと連携するデータベースがある場合は、以下のようにデータベースもバックアップします。
mysqldump -u root -p mydatabase > /backup/mydatabase.sql
確認ポイント
- バックアップファイルが破損していないかを確認します。
- 圧縮ファイルを解凍し、必要なファイルがすべて含まれているか検証します。
次のセクションでは、旧バージョンのApacheのアンインストールとインストール手順について詳しく解説します。
旧バージョンのアンインストールとインストール手順
Apache HTTP Serverのロールバックには、現在のバージョンをアンインストールし、旧バージョンをインストールする必要があります。このセクションでは、クリーンなアンインストール手順と旧バージョンの正しいインストール方法を解説します。
現在のApacheのアンインストール
1. Apacheの停止
まず、Apacheサービスを停止してからアンインストールを行います。
sudo systemctl stop httpd
sudo systemctl disable httpd
2. アンインストールコマンド
OSによって異なる方法でApacheをアンインストールします。
- CentOS/RHELの場合:
sudo yum remove httpd
- Ubuntu/Debianの場合:
sudo apt remove apache2
sudo apt autoremove
- 手動ビルド版(ソースからインストールした場合):
make uninstall
rm -rf /usr/local/apache2
旧バージョンのインストール
1. ダウンロードした旧バージョンの展開
tar -xvzf httpd-x.x.x.tar.gz
cd httpd-x.x.x
2. 必要な依存パッケージのインストール
Apacheをコンパイルするために必要なパッケージを事前にインストールします。
sudo yum groupinstall "Development Tools"
sudo yum install gcc pcre-devel expat-devel
Ubuntuの場合:
sudo apt install build-essential libpcre3-dev libexpat1-dev
3. コンパイルとインストール
./configure --prefix=/usr/local/apache2
make
sudo make install
4. シンボリックリンクの作成と起動
sudo ln -s /usr/local/apache2/bin/apachectl /usr/bin/apachectl
sudo systemctl start httpd
インストール後の確認
インストールが正常に完了したかを以下のコマンドで確認します。
apachectl -v
このコマンドで、インストールしたApacheのバージョンが表示されれば成功です。
次のセクションでは、旧バージョンのApache設定ファイルの復元方法について詳しく解説します。
旧バージョンのApache設定ファイルの復元方法
Apache HTTP Serverの旧バージョンをインストールした後は、バックアップしておいた設定ファイルを復元する必要があります。これにより、以前の動作環境をそのまま再現し、安定した運用を続けられます。
設定ファイルの復元手順
1. バックアップファイルの展開
まず、バックアップしていたApacheの設定ファイルを展開します。
tar -xzvf /backup/apache_config_backup.tar.gz -C /backup/
2. メイン設定ファイルの復元
旧バージョンのApacheがインストールされたディレクトリに、設定ファイルをコピーします。
sudo cp /backup/etc/httpd/conf/httpd.conf /usr/local/apache2/conf/httpd.conf
仮想ホストやSSL設定がある場合も同様に復元します。
sudo cp /backup/etc/httpd/conf.d/*.conf /usr/local/apache2/conf/extra/
3. サイトデータの復元
ドキュメントルート配下のWebサイトデータも元の場所に戻します。
sudo cp -r /backup/var/www/html/* /var/www/html/
4. モジュールの再設定
インストール済みモジュールが変更されている可能性があるため、バックアップしていたモジュールリストをもとに再設定します。
apachectl -M > current_modules.txt
diff installed_modules.txt current_modules.txt
差分を確認し、必要なモジュールをインストール・有効化します。
sudo a2enmod ssl
sudo a2enmod rewrite
復元後の設定確認
1. 設定ファイルの構文チェック
復元した設定ファイルが正しいかを確認します。
apachectl configtest
「Syntax OK」と表示されれば問題ありません。エラーが出た場合は、該当箇所を修正します。
2. Apacheの再起動
設定が正しいことを確認したら、Apacheを再起動します。
sudo systemctl restart httpd
3. 動作確認
ブラウザでサーバーのIPアドレスまたはドメインにアクセスし、サイトが正しく表示されるか確認します。
curl -I http://localhost
ステータスコード「200 OK」が返ってくれば復元は成功です。
次のセクションでは、動作確認とエラーチェック方法について解説します。
動作確認とエラーチェック方法
旧バージョンのApacheを復元した後は、システムが正しく動作しているか徹底的に確認する必要があります。動作確認とエラーチェックを行うことで、不具合を未然に防ぎ、安定した運用を実現できます。
基本的な動作確認
1. Apacheのステータス確認
Apacheが正常に稼働しているかを確認します。
sudo systemctl status httpd
「active (running)」と表示されれば、Apacheは正常に起動しています。
2. ウェブサーバーの応答確認
ブラウザやcurlコマンドでWebサイトにアクセスし、正しくページが表示されるかを確認します。
curl -I http://localhost
ステータスコード「200 OK」が返ってくることを確認してください。
3. SSLサイトの確認(HTTPS対応)
SSL設定がある場合は、HTTPSでもアクセス確認を行います。
curl -I https://localhost
証明書エラーが発生した場合は、SSL証明書やバーチャルホスト設定を確認します。
エラーチェック方法
1. Apacheエラーログの確認
エラーログを確認し、異常がないかをチェックします。
sudo tail -f /var/log/httpd/error_log
- 「Permission denied」:ファイルやディレクトリの権限エラー。
- 「File does not exist」:設定ファイルで指定したリソースが存在しないエラー。
- 「AH01630」:権限関連の問題。ディレクティブやSELinuxを確認します。
2. アクセスログの確認
アクセス状況も合わせて確認し、異常なリクエストがないかチェックします。
sudo tail -f /var/log/httpd/access_log
3. 設定ファイルの再チェック
Apacheの設定ファイルに誤りがないか再度確認します。
apachectl configtest
「Syntax OK」であれば設定ファイルに問題はありません。
パフォーマンスとリソース状況の確認
1. Apacheのプロセス確認
Apacheのプロセス数が適正であるかを確認します。
ps aux | grep httpd
2. サーバー負荷の確認
サーバーの負荷状況をリアルタイムで確認し、異常がないかを確認します。
top
htop
3. ポートの状態確認
Apacheが適切なポートでリッスンしているかを確認します。
sudo netstat -tuln | grep :80
sudo netstat -tuln | grep :443
問題が見つかった場合の対処法
- 設定ファイルのエラーが多発する場合は、ロールバックした設定ファイルを再度精査します。
- 権限エラーは
sudo chown -R apache:apache /var/www/html
などで修正します。 - サービスが自動で起動しない場合は、以下を実行して自動起動を有効化します。
sudo systemctl enable httpd
次のセクションでは、新バージョンへのアップグレード失敗時のトラブルシューティングについて詳しく解説します。
新バージョンへのアップグレード失敗時のトラブルシューティング
Apache HTTP Serverのアップグレードが失敗した場合、Webサイトの停止やエラーが発生する可能性があります。ここでは、新バージョンへのアップグレード中または後に起こる典型的な問題とその解決策を解説します。
アップグレード時の一般的な問題と対策
1. アップグレード後にApacheが起動しない
原因:設定ファイルの非互換性やモジュールのエラーが主な原因です。
解決策:
sudo apachectl configtest
- 「Syntax OK」が表示される場合:設定ファイルに問題はありません。
- エラーが出る場合:該当する行を修正し、再度
configtest
を実行します。 - モジュールエラーの場合:
sudo a2enmod rewrite
sudo a2enmod ssl
必要なモジュールが無効化されている可能性があるため、有効化して再起動します。
2. サービスが起動しているがWebページが表示されない
原因:ファイアウォールやSELinuxの設定が影響している可能性があります。
解決策:
- ファイアウォールのポート開放を確認します。
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload
- SELinuxが原因の場合、一時的に無効化して動作確認します。
sudo setenforce 0
これで動作する場合は、SELinuxポリシーの調整が必要です。
3. Apacheのモジュールエラー
原因:モジュールのバージョンがApacheと一致していない可能性があります。
解決策:
sudo yum install mod_ssl
sudo apt install libapache2-mod-php
必要なモジュールを再インストールして、バージョンを合わせます。
4. SSL証明書関連のエラー
原因:アップグレード時にSSL証明書が正しく読み込まれない場合があります。
解決策:
- 証明書のパスを再確認し、Apacheが正しく参照できることを確認します。
sudo nano /etc/httpd/conf.d/ssl.conf
証明書のパスが間違っている場合は、正しいパスに修正します。
エラー時のログ確認方法
1. エラーログの確認
アップグレード後にApacheが正しく動作しない場合は、エラーログを確認します。
sudo tail -f /var/log/httpd/error_log
- エラーの内容を確認し、該当する設定やモジュールを修正します。
2. アクセスログの確認
sudo tail -f /var/log/httpd/access_log
予期しないエラーがないかを確認します。
ロールバックの選択肢
アップグレードの問題が解決できない場合は、ロールバックを行い安定した旧バージョンに戻します。
sudo yum downgrade httpd
または、以前のバージョンを再インストールします。
次のセクションでは、Apacheのバージョンを固定し、自動更新を無効化する方法を解説します。
バージョン固定の方法と自動更新の無効化設定
Apache HTTP Serverを安定したバージョンで運用するためには、意図しないアップグレードを防ぎ、バージョンを固定しておくことが重要です。自動更新を無効化することで、アップグレードによるトラブルを未然に防ぐことができます。
Apacheのバージョン固定方法
1. 現在のApacheバージョンを確認
apachectl -v
現在稼働中のApacheのバージョンを確認します。
2. 使用中のパッケージをロック(バージョン固定)
- CentOS/RHELの場合(yum/dnf使用)
sudo yum versionlock httpd
もしくは、dnf
コマンドを使用する場合:
sudo dnf versionlock httpd
- Ubuntu/Debianの場合(apt使用)
sudo apt-mark hold apache2
これでApacheの自動アップデートが停止し、現在のバージョンが維持されます。
3. バージョン固定が適用されているか確認
- CentOS/RHEL
sudo yum versionlock list
- Ubuntu/Debian
apt-mark showhold
Apacheがロックされていることを確認します。
Apacheの自動更新無効化
1. 自動更新サービスの停止
- CentOS/RHELの場合
sudo systemctl disable dnf-automatic.timer
sudo systemctl stop dnf-automatic.timer
- Ubuntu/Debianの場合
sudo systemctl disable unattended-upgrades
sudo systemctl stop unattended-upgrades
2. 自動更新設定ファイルの編集
- Ubuntu/Debianでは、自動更新を根本的に無効化するために以下の設定を編集します。
sudo nano /etc/apt/apt.conf.d/20auto-upgrades
以下の行を修正または追加します。
APT::Periodic::Update-Package-Lists "0";
APT::Periodic::Unattended-Upgrade "0";
自動更新が必要な場合の対応
重要なセキュリティアップデートのみを手動で適用することで、安定性を維持しながら安全な環境を確保できます。
sudo yum update --security
sudo apt update && sudo apt upgrade --only-upgrade
自動更新の無効化確認
サーバーを再起動し、Apacheのバージョンが変わっていないことを確認します。
apachectl -v
次のセクションでは、本記事の内容を総括し、重要ポイントを振り返ります。
まとめ
本記事では、Apache HTTP Serverのロールバック手順と旧バージョンのインストール方法について解説しました。アップグレード後の不具合や互換性の問題に迅速に対応するため、ロールバックは重要なスキルです。
主なポイントは以下の通りです:
- ロールバックが必要な状況を把握し、問題発生時に迅速に対応できるよう準備する。
- 旧バージョンのダウンロードは公式サイトから行い、安全性を確保する。
- 環境のバックアップを忘れずに行い、トラブル時に元の状態へ戻せる体制を整える。
- アンインストールと再インストールはOSに合わせた方法で適切に実行し、エラーを防ぐ。
- 設定ファイルの復元と動作確認を徹底し、細かな不具合も見逃さない。
- 自動更新を防ぐため、バージョン固定と自動更新無効化を実施することで、安定した運用環境を維持する。
これらの手順を踏むことで、Apache HTTP Serverのトラブルを最小限に抑え、安心して運用を続けることができます。
コメント