新しいマシンへの移行
安全にMastodonを新しい環境に移行する。
いろいろ事情があってMastodonインスタンスを他のサーバーへ移行したいこともあるでしょう。人は時たま移行せざるを得ない状況に出会うものです。しかし、そこまで難しいものでもありません。Mastodonの移行は、ダウンタイムは発生するもののそこまで難しいものではありません。
概要
- 新しい環境で新しいMastodonを立ち上げます。インストールガイドも見てください。
mastodon:setupはまだしないでください。 - 旧環境でMastodonのサービスを停止させてください。
systemctl stop mastodon-*.service) - 後述の手順に従ってPostgresデータベースをダンプしロードしてください。
system/以下のファイルを旧環境から新環境へコピーしてください。(S3やその他オブジェクトストレージを使用していない場合のみ).env.productionを旧環境から新環境へコピーしてください。RAILS_ENV=production bundle exec rails assets:precompileを実行してください。RAILS_ENV=production ./bin/tootctl feeds buildを実行してください。ホームタイムラインを再構築します。- 新環境のMastodonのサービスを起動します。
- DNS設定を編集し新環境へアクセスできるようにします。
- 必要に応じてNginxのconfやLet’s Encryptの再取得をしてください。
- 新環境で快適なMastodonライフを!
詳細な手順
移行すべきデータ
以下はとにかく移行してください。
~/live/public/system以下のファイル。ユーザーがアップロードしたメディアが全て含まれています。(S3やその他オブジェクトストレージを使用している場合は除く)- Postgresデータベース(pg_dumpを使用)
~/live/.env.production(サーバーの設定やシークレットファイル)
必須というわけではないが、移行した方が楽になる場合があります。
/etc/nginx/sites-available/defaultにあるNginxのconf- サービス設定ファイル:
/etc/systemd/system/mastodon-*.service(サーバーの調整やカスタマイズが含まれている場合があります。) - 使用している場合、pgBouncerの設定ファイル:
/etc/pgbouncer
Postgresのダンプとロード
mastodon:setupを実行するかわりに、template_0という空のデータベースを作ります。こうすることで、Postgresのダンプが楽になります。as described in the pg_dump documentationも参照。
mastodonユーザーで以下の通りに実行してください。
pg_dump -Fc mastodon_production -f backup.dump
backup.dumpをrsyncやscpを使って新しい環境にコピーし、その新環境のmastodonユーザーで空のデータベースを作ります。
createdb -T template0 mastodon_production
そしてインポートします。
pg_restore -U mastodon -n public --no-owner --role=mastodon \
-d mastodon_production backup.dump
(もしユーザー名がmastodonでないなら、-Uと--roleを変えてください。2つの環境間でユーザー名が異なっていても構いません。)
ファイルのコピー
おそらくかなりの時間がかかります。不要な再コピーを防ぐためにも、rsyncを使うのがおすすめです。旧環境のmastodonユーザーで、
rsync -avz ~/live/public/system/ mastodon@example.com:~/live/public/system/
と実行します。移行中に外部から何らかのファイル変更があった場合、再実行の必要があります。
.env.productionも秘匿すべき内容が含まれているためコピーしてください。
任意でNginxやsystemd、pgBouncerの設定ファイルもコピーするか、0から書き直しても構いません。
移行中は…
旧環境の~/live/public/500.htmlを編集して、移行実行中ということをユーザーに知らせるエラーメッセージを表示させておくと良いでしょう。
移行の前日までにDNSのTTLを短く(30〜60分)に設定して、すぐに新しい環境にアクセスできるようにしてください。
移行の後
whatsmydns.netなどでDNSの適用状況をチェックできます。開発環境等の/etc/hostsを編集して、新しい環境にすぐにアクセスできるようにするのも良いでしょう。
最終更新 February 12, 2020 · このページを改善する
他の言語:
English