| サービス選定〜OSのインストール | |
| サーバー類のインストール | |
| nginx | |
| さくら de Ubuntu | |
| >>> | サーバーの引越 |
| バックアップ | |
| Let's Encrypt |
配送は止まるがSMTPは生きているので、やってきたメールはキューに溜まって配送待ちになる。
うちの構成の場合、基本的には/usr/local/etcの下。
コミット漏れがないかどうか確認
ホームディレクトリと、うちの場合、リポジトリは/usr/localの下に固めてあるので、とにかく/usr/localの下をよく見て転送する。
これはsshを使ってtarで引っ張ってくるのが早いが、新旧両方のホストでrootになる必要がある。
ところが、rootでのログインを許可していないと、sudoかsuでrootになる必要があり、パスワードで困ってしまう。
いろいろ方法はあると思うが、ここでは名前つきパイプで解決してみる。
old-host$ su old-host# cd /var old-host# mkdir priv old-host# chmod 700 priv old-host# chown user priv old-host# cd priv old-host# mkfifo tar old-host# chmod 600 tar old-host# chown user tar old-host# cd /home old-host# tar xfvz /var/priv/tar *
new-host$ cd /home new-host$ sudo ssh user@old-host "cat /var/priv/tar" | tar xfvz -
UNIXってほんとよくできてる。
最初に作ったアカウントと同じ名前のアカウントがあると上書きされてしまうので、今あるアカウントを取っておきたい場合は/homeをどこか適当な場所に作っておいて、init 1でシングルユーザーモードになってからちまちまとmvすればよい。
逆に、最初に作ったアカウントをここで消してしまう場合、sudoersに自分を登録しておかないと二度とrootになれないので注意。
rootにパスワードがないとレスキューディスクのお出ましになる。
.sshの対応
旧ホストと新ホストに関わるエントリを変更する必要がある。
localhostも変わる点に注意。
実際には旧ホストから持ってきた.sshは.ssh.oldとかにリネームしてしまって、新ホストでさっきまで使ってた.sshを持ってきたほうが早い。
スタッフじゃないユーザーがいる場合は適宜考える必要がある。
とりあえずlocalhostをコメントアウトする、とかかなー。
.profileとか、.bashrcとか。
これは手マージするしかない。
カスタム設定だけ別ファイルにしておいて、sourceするようにした方がいいかも。
あとは.google_authenticatorとかのなくすとヤヴァそうなやつ。
rootさんのホームディレクトリ
案外大事なファイルが転がってたり。
SOA・NS・MXレコードや、必要に応じてAレコードも書き換える。 そして、新旧両方のサーバーで新しいデータベースファイルをリロードする。 これを忘れるとDNSのシントーに時間がかかってしまう。
この時点で、キャッシュのTTLが満了したサーバーから、新しいサーバーのレコードを返すようになります。
メール配信を再開する前に、旧ホストのメール配信を、強制的に新ホストへのリレーに設定します。
qmailならばlocalsを空に、virtualdomainsを削除した上で、smtproutesファイルに
example.jp:new-host.example.jp .example.jp:new-host.example.jpと書けばOK。
locals・virtualdomainsを殺して全部リモートに振り向けていたのを元に戻します。
SMTPを止めていた場合は動かします。
旧ホストのキューに溜まっていたメールは新ホストにリレーされます。 新ホストのキューに溜まっていたメールは新ホストのメールスプールに配送されます。
システムcrontabとユーザーcrontab。
システムcrontabは/etc/crontabと、/etc/cron.d/以下に、また、/etc/cron.dailyなんかの下にシェルスクリプトが入っている。
一度ls -ld /etc/cron*してみた方がよい。
ユーザーcrontabは/var/spool/cron/tabsあたりにある。
crontabに書かれているコマンドが実行できるようになってることも確認。
旧ホストのcrontabは必要に応じて無効にしておく。
使ってるようなら。
旧ホストのOSを入れ替える前に。
/etcの下と、/usr/local/etcの下。
OSアップデート後にSSHで同じ鍵を使うなら、鍵はここに入っている。
/varの下。
Apacheのアクセスログとかね。
結局、解析してないんだけれども。
ただ、DNSを切り替えた直後は両方のホストにアクセスが来るからなんとも。
リバースプロキシみたいにして新ホストに転送してもいいんだけど、そうすると結局ソースIPアドレスが取れない気がする。
サーバーを機能名(git.example.jp)で指定している場合は、DNSキャッシュのTTLが切れるまで待てばよいが、切り替わらないときはとりあえず固有名(host1.example.jp)を指定してしのげばよい。
CVSはこんな感じ。
Subversionはsvn switch URLで変更できたはず。
gitはgit remote set-url origin URLで変更できる。
引越の機会に、dot-qmailファイルに少し手を入れました。
普通は~/.qmailやら~/.qmail-ownerやら、ホームディレクトリ直下にファイルを作りますが、拡張アドレスが増えてくるとls -aしたときに.qmailだらけになって見づらいのと、Gitなんかで管理するときもサブディレクトリにまとまってないとやりにくいので。
仮想ドメインを運用していて、localsとvirtualdomainsの衝突というか、別名ができるのを防ぐために、localsは空にしてあります。
つまり、実ドメインも仮想ドメイン扱いにしていて、そうすると実ユーザーをqmail-getpwで扱うことができないのでqmail-usersで扱っています。
もし、virtualdomainsに
domain.example.jp:domain
と書いてあったとすると、usersは普通はこう書きます。
=domain-user:user:uid:gid:/home/user::: +domain-user-:user:uid:gid:/home/user:-::
この場合、
user@domain.example.jpのdot-qmailは | ~/.qmail
|
user-ext@domain.example.jpのdot-qmailは | ~/.qmail-ext
|
になります。
これを
=domain-user:user:uid:gid:/home/user:/:@: +domain-user-:user:uid:gid:/home/user:/::
こう書くと、
user@domain.example.jpのdot-qmailは | ~/.qmail/@
|
user-ext@domain.example.jpのdot-qmailは | ~/.qmail/ext
|
になります。
このとき、~/.qmail/@-ownerをtouchしておくと、転送のときに表書き差出人がuser-owner@domain.exampe.jpになりますが、このアドレスは~/.qmail/@-ownerではなく、~/.qmail/ownerの配送指示に従います。
つまり、~/.qmail/ownerもtouchしないといけません。
これはちょっとつまらないので、~/.qmail/@-ownerのためのルールも作ります。
ついでにVERP用のルールも。
=domain-user:user:uid:gid:/home/user:/:@: =domain-user-owner:user:uid:gid:/home/user:/:@-owner: +domain-user-owner-:user:uid:gid:/home/user:/:@-owner-: +domain-user-:user:uid:gid:/home/user:/::
これで、
user@domain.example.jpのdot-qmailは | ~/.qmail/@
|
user-owner@domain.example.jpのdot-qmailは | ~/.qmail/@-owner
|
user-owner-ext@domain.example.jpのdot-qmailは | ~/.qmail/@-owner-ext
|
user-ext@domain.example.jpのdot-qmailは | ~/.qmail/ext
|
になります。
ただ、これだとuser-@-owner@domain.example.jp宛のメールが~/.qmail/@-ownerの配送指示に従うので、このアドレスでもメールが届いてしまいます。
変なアドレスですが実際にqmail-injectすると届きます。
fixme@fixup方式のメッセージIDの付加はこれを使っています。
それと、user-@domain.example.jp宛のメールはdot-qmailファイルが~/.qmail/(ディレクトリ)になってしまうので、defaultを設定していない限り届きません。
対策として、通常の拡張アドレスにもプレフィックスを付けることにします。
.や-は使い勝手が悪い(前者は隠しファイル、後者はコマンドラインでオプションとして扱われる)ので_を使うことにします。
=domain-user:user:uid:gid:/home/user:/:@: =domain-user-owner:user:uid:gid:/home/user:/:@-owner: +domain-user-owner-:user:uid:gid:/home/user:/:@-owner-: +domain-user-:user:uid:gid:/home/user:/:_:
これで、
user@domain.example.jpのdot-qmailは | ~/.qmail/@
|
user-owner@domain.example.jpのdot-qmailは | ~/.qmail/@-owner
|
user-owner-ext@domain.example.jpのdot-qmailは | ~/.qmail/@-owner-ext
|
user-ext@domain.example.jpのdot-qmailは | ~/.qmail/_ext
|
user-@domain.example.jpのdot-qmailは | ~/.qmail/_
|
になります。
user-owner-ext@domain.example.jp宛のdot-qmail、~/.qmail/@-owner-extがなかった場合は、
~/.qmail/@-owner-default~/.qmail/@-default~/.qmail/default
の順に検索されます。
user-foo-bar@domain.example.jp宛のdot-qmail、~/.qmail/foo-barがなかった場合は、
~/.qmail/_foo-bar~/.qmail/_foo-default~/.qmail/defaultの順に検索されます。
~/.qmail/_defaultは検索されないことに注意。
Copyright (C) 2018 akamoz.jp
$Id: moving.htm,v 1.5 2019/05/24 15:20:20 you Exp $