- 按照《搭建 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
。
全文翻译自官方文档