当サイトに残しているLinuxの設定について。

多くのケースで

sudo cp -pi /etc/apache/sites-available/hoge.example.conf /path/to/backup/hoge.example.conf.$(date +%Y%m%d)
# 任意のバックアップディレクトリを指定します。

diff -u /etc/apache/sites-available/hoge.example.conf /path/to/backup/hoge.example.conf.$(date +%Y%m%d)
# バックアップが保存されたか、差分がないことで確認します。

と、バックアップを取っています。その重要性を書こうとしましたが、ChatGPTの方がうまく説明してくれるのではと思いプロンプトを叩いてみると、物の見事に答えてくれました。

設定変更作業を行う際に設定ファイルをバックアップし、失敗した場合にバックアップファイルから切り戻すことは非常に重要です。以下にその重要性をいくつか説明します:

  1. システムの安全性と信頼性の確保:
    サーバーの設定ファイルに誤った変更を加えると、サーバーの正常な動作に影響を及ぼす可能性があります。バックアップを取らない場合、問題が発生したときに元の状態に戻す手段がなくなり、システムの安全性と信頼性が損なわれる可能性が高まります。
  2. トラブルシューティングの助け:
    設定変更による問題が発生した場合、バックアップファイルを使用して元の設定に戻すことで、問題を解決する手助けとなります。バックアップがない場合、問題の特定や修正が難しく、システムの停止時間が延長される可能性があります。
  3. 変更履歴の記録:
    バックアップファイルを保存することにより、設定変更の履歴を確認できます。特定の変更が問題を引き起こす場合、どの変更が原因かを特定しやすくなります。これにより、同じ問題が将来的に再発するのを防ぐのに役立ちます。
  4. 開発とテストのサポート:
    バックアップファイルは、新しい機能や設定変更をテストする際にも役立ちます。変更前の設定ファイルを使用して、新しい設定が期待どおりに機能するかどうかを確認できます。
  5. バージョン管理とチーム協力:
    プロジェクトが複数の開発者や管理者によって共同管理される場合、バックアップファイルを使用することで、異なるバージョンの設定ファイルを比較し、変更を調整するのに役立ちます。

バックアップを取る際には、タイムスタンプを含む有効なファイル名を使用し、適切な場所に保存することをお勧めします。また、定期的にバックアップを更新し、システムの変更が行われるたびに新しいバックアップを作成することが重要です。バックアップと適切な設定管理は、システムの安全性と信頼性を確保するために欠かせないプラクティスです。

この事態が発生したので、設定ファイルを切り戻す際の心構え的なことを書いていきます。

エラーの事象を確認します。

  1. 本来とは意図しない動きが発生した。
  2. サイトそのものが見られなくなった。

など、設定変更時にはトラブルはつきものです。その際、まず、すぐ修正しようとせず

「今起きている現象は何か」

を記録しておきます。

  • システムログ
  • スクリーンショット
  • 概要

何でも構いません。「今の現象をありのまま記録する」が重要です。

切り戻しを実施します。

ある程度の記録が発生した後、「元の状態に戻す(切り戻し)」を行います。

冒頭の「hoge.example.conf」設定ファイルの変更中に不具合が発生した場合の切り戻し手順を示します。

  • 問題を起こした設定ファイルをコピーする

この作業は原因追及のために必要です。

sudo cp -pi /etc/apache/sites-available/hoge.example.conf /path/to/backup/ERROR_hoge.example.conf.$(date +%Y%m%d)
# バックアップしたファイルとは別の名前にしておきます。
  • 切り戻しを実施する

cp バックアップファイル 元のファイル

の順番を間違えると二次災害を生みます。

sudo cp -pi /path/to/backup/hoge.example.conf.$(date +%Y%m%d) /etc/apache/sites-available/hoge.example.conf 
  • サービスを再起動する

ここではWebサービス(apache)の再起動を行います。

sudo systemctl restart apache2.service

sudo systemctl status apache2.service
# サービス稼働を確認します。

修正前の状態であることを確認します。

証明書の更新作業だったら、「有効期限が延びていないこと」など、明確な指標があると楽です。

失敗を悔やむより

  1. どんな失敗があったかを記録する
  2. 元の状態に戻す
  3. その後で原因を考える
  4. 原因をフィードバックする

の方が、自分にとっても利用者にとっても建設的です。