本番環境でトラブルを起こさないための手順作成TIPS


1年目のインフラエンジニアです。本番環境での設定変更等を行うための手順作成時の注意点やよく使うコマンドをまとめます。
※随時更新予定

本番作業の流れ

  1. 変更が入る設定ファイルをバックアップ
    • エラーや予期しない結果となった場合に、切り戻しが必要なため
    • 設定変更時からの差分比較の実施にも使用する
  2. 設定変更
    1. 設定ファイルを変更し、意図した箇所が変更されているか、バックアップした設定ファイルと差分比較して確認する
    2. サービスの再起動などにより、設定反映を実施する
  3. 動作確認
    設定変更が意図した通りに反映されているか、問題が発生していないかを確認
Webページを移行する場合
作業日バックアップ用のディレクトリを作成
# mkdir -v /var/tmp/`date +%Y%m%d`backup
mkdir: created directory `/var/tmp/20200307backup'

httpd.confをバックアップ
# cp -av /etc/httpd/conf/httpd.conf /var/tmp/`date +%Y%m%d`backup
`/etc/httpd/conf/httpd.conf' -> `/var/tmp/20200307backup/httpd.conf'

DocumentRootを移行
# vim /etc/httpd/conf/httpd.conf

設定変更部分の差分確認
# diff -U0 /var/tmp/`date +%Y%m%d`backup/httpd.conf /etc/httpd/conf/httpd.conf 
--- /var/tmp/20200307work/httpd.conf    2020-02-24 10:40:22.515205375 +0000
+++ /etc/httpd/conf/httpd.conf  2020-03-07 14:33:18.297797548 +0000
@@ -120 +120 @@
-DocumentRoot "/var/www/html"
+DocumentRoot "/var/www/html_after"

設定エラーがないことを確認
# httpd -t
Syntax OK

サービスを再起動して設定を反映
# systemctl reload httpd.service

サービスの正常性確認
# systemctl status httpd.service

移行後の新ページが表示されていることの確認
# curl http://localhost

TIPS

カレントディレクトリを変更する

pwdとセットで実施し、移動していることを確認する

# cd /etc/httpd/conf/;pwd
/etc/httpd/conf/

ファイルをコピーする

cpオプション

  • -a (--preserve=all)
    コピー元の情報を保持してコピーする(パーミッション、オーナー、タイムスタンプ等)
  • -v (--verbose)
    実行していることを説明する
cp
# cp -av /etc/httpd/conf/httpd.conf /var/tmp/20200307backup/
`/etc/httpd/conf/httpd.conf' -> `/var/tmp/20200307backup/httpd.conf'
または
# cp -a /etc/http/conf/httpd.conf /var/tmp/20200307backup/
# ls -l /var/tmp/20200307backup/

ファイルを移動する

コピー元ファイルのメタ情報を保持するために、mvを使用せず、cpを使用
Linuxでのファイルの入れ替え(mvコマンド vs cpコマンド)

移動
# cp -av /usr/local/bin/test.sh /usr/local/sbin/
`/usr/local/bin/test.sh' -> `/usr/local/sbin/test.sh'
# rm -i /usr/local/bin/test.sh
rm: remove regular file ‘/usr/local/bin/test.sh’? y

複数ファイルを削除する

/home/work/配下のtestから始まるファイルの削除
# ls /root/work/(参考)
/root/work/sample  /root/work/test0  /root/work/test1  /root/work/test2

rmで削除する前に同じパスで削除対象のファイルに間違いがないかを確認
# ls /root/work/test*
/root/work/test0  /root/work/test1  /root/work/test2

# rm /root/work/test*
rm: remove regular empty file ‘/root/work/test0’? y
rm: remove regular empty file ‘/root/work/test1’? y
rm: remove regular empty file ‘/root/work/test2’? y