研究室(というか自室)に置いている,メールサーバ兼Subversionサーバを,物理的に交換しました.
サーバといっても,OSなしのデスクトップPCを購入して,Ubuntuをインストールしたというだけのものです.それと,Subversionサーバとしては学生からのアクセスもあります(共有を意図して,運用しています)が,メールサーバ(SMTP, IMAP)は自分専用です.
かつて読んだ本には,カーネルの再構築をして,リブート(再起動)の前に緊張すると書かれていました.いまやカーネルの再構築をすることがなくなりましたが,サーバリプレースは昔も今も,緊張の一瞬です.
緊張を和らげ,失敗を少しでも減らすために,作業の前にToDoリストを作っていました.公開します.
前提として,リプレース前のサーバを「旧機」,後のサーバを「新機」と略記しています.リプレース作業により,それぞれのIPアドレスを交換します.Subversionサーバは,Apacheとdav_svn*1で構成しています.
- 旧機:postfix, dovecotを停止
- 新機:postfix, dovecotを停止
- 新機:rsyncで~/Maildirを同期
- 旧機:LANケーブルを外す
- 新機:IPアドレスを変更
- 新機:/etc/{mailname,hostname,hosts}のホスト名を変更
- 新機:/etc/postfix/main.cfを変更
- 新機:/etc/apache2/sites-availableを変更
- 新機:apache2を再起動
- 新機:リポジトリ更新確認
- 新機:再起動
- 新機:IPアドレス,ホスト名,メール受信の確認
- 旧機:IPアドレスを変更
- 旧機:/etc/{mailname,hostname,hosts}のホスト名を変更
- 旧機:/etc/postfix/main.cfを変更
- 旧機:LANケーブルを差し込む
- 旧機:再起動
- 旧機:IPアドレス,ホスト名の確認
いくつか,補足を.rsyncによるディレクトリ同期は,トラブルが起こりやすいところです.コマンドを間違うと,~/Maildir/Maildirができることもあります.今回は新機のシェル上で,次のようにコマンドを実行しました.rsyncコマンドのコピー元・コピー先の両方を「/」で終わらせるのが重要です.
$ mkdir ~/Maildir $ rsync -avz ユーザ名@旧機:Maildir/ ~/Maildir/
旧機の設定変更は,IPアドレス・ホスト名のほか,メールサーバ関連のほうを行い,Subversionを含むWeb関連については,そのままとしました.何かあってHTTPのアクセスをする可能性もある一方で,メールは送受信が絡むためです.
「新機:リポジトリ更新確認」は何かというと,実はSubversionのリポジトリを,このリプレース作業の前に,rsyncコマンドでコピーしていたのでした*2.そこで確認として,それより前から使っていた作業コピー上で,svn updateコマンドを実行しました.