- 按照《搭建 Mastodon 实例 | How to install a Mastodon instance》在新服务器上搭建 Mastodon(但是不要运行同步数据库 db:setup)
- 停止旧服务器上的 Mastodon (systemctl stop 'mastodon-*.service')
- 按照下方的步骤备份并恢复数据库
- 按照下方的步骤复制 system 的内容至新服务器
- 重建用户首页数据 (RAILS_ENV=production bundle exec rails mastodon:feeds:build)
- 在新服务器上开启 Mastodon 的服务
- 更新 DNS 至新服务器 IP
- 在新服务器上设置 Nginx 配置文件并重签 Let’s Encrypt 证书
- All Down!
备份并恢复数据库
在旧服务器上导出数据库(使用 mastodon 用户)
su - mastodon // 切换至 mastodon 用户
pg_dump mastodon_production > dump.sql
下载 dump.sql 文件至本地并上传至新服务器,记得赋予 dump.sql 文件的读取权限给 mastodon 用户
在新服务器上创建一个空白数据库(使用 mastodon 用户)
su - mastodon // 切换至 mastodon 用户
createdb -T template0 mastodon_production
导入 dump.sql 至数据库(还是使用 mastodon 用户)
psql mastodon_production < dump.sql
会出现一些 no privileges could be revoked for “public” 的错误提升,可以忽略
复制 system 的内容至新服务器
复制旧服务器的 ~/live/.env.production 文件至服务器
复制旧服务器的 ~/live/public/system 文件夹至服务器
因为 ~/live/public/system 文件夹的内容很多,推荐使用 rsync 来传输,在旧服务器上运行(使用 mastodon 用户)
su - mastodon // 切换至 mastodon 用户
rsync -avz ~/live/public/system/ -e "SSH -p 22 -i ~/.ssh/id_rsa" root@example.com:/home/mastodon/live/public/system/
其中 -p 22 为新服务器的端口,若使用密码登陆,去掉其中的 -i ~/.ssh/id_rsa。
全文翻译自官方文档