昨日までの2日間で,仕事場で使っているサーバを交換しました.記録を残しておきます.
前提として,2台のサーバは「旧サーバ」と「新サーバ」と呼び分けます.旧サーバはGentooで,もちろん交換前までフル活動です.新サーバはUbuntuで,アプリケーションをいくつかいれていますが,サーバに関しては,まっさら同然です.
todoとdiffを書き出す
作業をするにあたり,テキストファイルに,「何をするか」と「2つのサーバの違い」を書いておきます.
「何をするか」については,大まかには以下の通りです.実際には行単位で細かく書きます.
- メール (SMTP,IMAP,過去メール)
- Webサーバ (Apache,SSL,モジュール)
- データベースなど (PostgreSQL,Tritonn,HyperEstraier)
- Webアプリケーション (C,PHP,Ruby)
- Subversionリポジトリ
- ホスト変更 (hostname,IPアドレス)
1件の作業を終えれば,先頭に「■」をつけます.全部が「■」になれば,作業完了です.
2つのサーバの違いというのは,作業する本人は分かっていますが,将来へのメモとして残しておきます.具体的には
- ディストリビューション(バージョンも)
- 付随するソフトウェア(バージョンも)
- 主要アプリケーションのインストール方法
を控えておきます.RubyGemsで入れたものは,「gem list」で確認です.
メール
旧サーバはcourier-imapで,~/.maildir にメールを置くようにしていましたが,新サーバではcyrus-imapd-2.2というのを入れてみました.http://hk-tech.homeip.net/pcserver/imap4.html を見ながら作業しました.
過去のメール本文の移転について,新サーバでアプリケーションを調査….
# apt-cache search cyrus | grep courier cyrus2courier - converts Cyrus mailbox format to Maildir
欲しいのはその逆です.Googleに頼ると,http://www.samage.net/dev/ というのが見つかりました.3つダウンロードでき,パッチを当てればいいのかなと思ったら,3つともPerlスクリプトです.ちょっと迷って,3番目(Patched by Christian Kratzerのもの)をダウンロードし,パスやUID/GIDなどを書き換えて,「./maildir2cyrus-uid takehiko takehiko」を実行しました.
あ,その前に,rsync -avz -e sshで,旧サーバから新サーバへメールのファイルをコピーしておきます.
これで移行は完了,と思ってThunderbirdで接続を試みても,うまくいきません.新サーバの負荷が1になって一向に減らないので,強制終了*1.
対策ですが,「cyradm -user Cyrus管理ユーザ localhost」で入り,「lm」を実行してMailboxの一覧を出してから,「reconstruct Mailbox名」で一つ一つ,移行したMailboxの再構築をすることで,うまくいきました.
*1:といってもkillではなく,/etc/init.d/cyrus2.2 stopで止まります.落ち着いたところで,/etc/init.d/cyrus2.2 startとします.