今天是六一儿童节呀,赶在今天我也水一篇 Mastodon 迁移教程(好像和六一并没有什么关系啊喂!)~

好吧,其实想了想这个教程也没什么好说的地方,Mastodon 官网给的教程还是挺规范的了,按照教程走基本没什么坑,我这个也能说是个简单的英译中版本吧,和教程基本就是一样的,只有很少的地方不同。

一、教程声明

本教程是以 https://docs.joinmastodon.org/admin/migrating/ 这个官方教程为基础来写的,大部分算是照搬原教程的内容,一些小地方有自己的说明。

另外,本教程是以 [Debian]Mastodon 手动安装教程(更新于:20200515) 这个安装教程为基础来写的对应搬迁教程,萌茶我自己是用的 Debian 10 和 LNMP 的单 Nginx 环境,所以教程不一定适合所有人,请按照自己的环境来调整后面的操作。

二、迁移前的准备

为了让我们能尽可能不出毛病的一次迁移成功,我们先把一些准备工作做好。

2.1 新主机安装 Mastodon

这一步没什么特别要说的地方,步骤直接按照我原来的教程来安装就好了。

教程:[Debian]Mastodon 手动安装教程(更新于:20200515)

基本上全部照搬上面这个教程安装就可以了,只需要我们注意跳过其中的一步,就是生成 Mastodon 的配置文件这一步,也就是说不要执行下面的这行命令:

RAILS_ENV=production bundle exec rake mastodon:setup

2.2 停用 Mastodon 准备迁移

先进入原来的 Mastodon 服务器,用 Root 权限运行下面的命令停用 Mastodon 的服务,方便我们迁移且不出错:

systemctl stop 'mastodon-*.service'

2.3 备份 Mastodon 文件

迁移需要备份的文件不是很多,主要是 Mastodon System 目录里媒体文件,还有.env.production 这个保存有 Mastodon 配置信息的文件,再就是数据库了。当然,真要完整迁移的话还需要备份好 Nginx 虚拟主机的配置文件,SSL 证书之类的,这个大家也需要注意,我这里就不对这个细说了。

对于 Mastodon 需要备份的这些文件,我打算放在后面和迁移教程一起来说,这里只是给大家提个醒,别忘了及时备份文件。

三、迁移教程

迁移教程主要分四部分来说,一是数据库迁移和导入,二是 Mastodon 媒体文件的迁移,三是 Mastodon 配置环境配置文件的迁移,四是迁移完成后的一些设置的修改提醒。

3.1 数据库的迁移和导入

如果你按照我上面的安装教程安装的 Mastodon,那么直接按照官方给的命令就可以把 Mastodon 数据库导出了。

先在原服务器上切换到 Mastodon 用户:

su - mastodon

然后执行下面的命令导出 Mastodon 的数据库:

pg_dump -Fc mastodon_production -f backup.dump

这里有几个地方是需要注意的,一是 mastodon_production 这个是说的 Mastodon 数据库的名称,如果在以前安装 Mastodon 进入安装向导时输入的是默认配置,则这个不需要更改,如果你原来改过数据库名称,可以在/home/mastodon/live/.env.production 这个文件里找到具体的数据库名称,复制后替换上面写的 mastodon_production 就可以了。二是执行上面的命令后,导出的数据库文件为/home/mastodon/backup.dump,下载下来备份好。

备份好上面说的 backup.dump 文件后,将这个文件上传到你要搬迁到的新服务器/home/mastodon 这个目录下,具体怎么上传上去都随意,完成之后,就可以开始导入数据库了。

在新服务器上切换到 Mastodon 程序运行的用户,一般是 Mastodon,除非你有自己设置别的:

su - mastodon

然后输入下面的命令,导入数据库:

createdb -T template0 mastodon_production
pg_restore -U mastodon -n public --no-owner --role=mastodon \
  -d mastodon_production backup.dump

这两部我特意分开来说,是因为后面这条命令有一些需要注意的地方。首先注意其中的-U mastodon 这里,mastodon 说的是 Mastodon 程序运行的用户,如果你的不是这个记得把-U 和–role 后面都修改成你自己的用户名。另外就是-d mastodon_production 这里,这里说的 mastodon_production 对应的是我们上一条命令里的那个,不是说的你的数据库名称,所以不需要你改动什么,直接照着这么输入就行了。

执行完上面的命令之后,你的数据库应该已经导入了新的服务器了,接下来就是文件的迁移了。

3.2 Mastodon system 文件夹的整体迁移

根据官方文档所说,整个 Mastodon 文件夹内的文件不需要全部迁移,只需要把最重要的 system 文件夹迁移到新服务器上就可以了,因为此文件夹里保存有大量的媒体文件,不迁移的话新服务器会丢失资源。

system 文件夹的迁移方法有很多,官方给出的方法是 rsync 同步的方法,我自己不怎么喜欢(因为可能要安装额外的软件),所以我选择了和我搬迁 WordPress 时用的方法,也就是通过 tar 来同步传输文件到新服务器里,这样做的好处一是方便,二是不需要安装其它软件——毕竟 tar 算是各个发行版的标配了,具体怎么弄看下面的说明。

首先是登录旧的服务器,使用 root 权限进入到 system 这个文件夹的上一个目录:

cd /home/mastodon/live/public

然后,使用 tar 命令将 system 目录传输到新服务器上:

tar czf  - system | ssh [email protected] -p 22 tar xzf - -C /home/mastodon/live/public

上面这个命令给大家解释一下,system 这里就是说的 system 文件夹,这里不要改动,后面的部分,IP 这里替换成你的新服务器实际 IP,22 这里改成新服务器的 SSH 端口号,最后的 /home/mastodon/live/public 对应的是新服务器 Mastodon 的 public 文件夹路径,如果你没怎么改动的话就照着这么写就行了。

上面的命令执行后,会提示你输入新服务器的 SSH 连接密码,输入完毕之后,整个 SSH 窗口可能不会返回有效信息,等待一段时间(依据你的服务器之间传输速度和文件大小来估计)让服务器之间传输完成,直至你再次看到 SSH 窗口可以输入新执行命令时,就可以去新服务器上看看是不是传输完成了。

3.3 Mastodon 有关配置文件的迁移

把最重要的 system 文件夹迁移到新服务器上之后,剩下的事情就比较简单了,只需要把一些配置文件还有 Nginx 的虚拟主机配置复制到新服务器上就可以了。

具体来说,首先是找到 /home/mastodon/live/.env.production 这个文件,把这个文件复制到新服务上的对应位置,也就是 /home/mastodon/live 里。

然后,如果你根据我的搭建教程搭建好了 Mastodon,记得把 Nginx 虚拟主机的配置文件也一并复制到新服务里,具体位置是在 /etc/local/nginx/conf/vhost 这个文件夹里,把里面的网站配置文件复制到新服务器对应的文件夹里就行了。同时,这里也需要注意一下,Nginx 配置文件里会写有我们网站的 SSL 证书等文件的路径,这个记得修改成你新服务对应文件的路径,或者按照原来的路径把证书文件给复制到新服务器的同路径下。

然后,就是复制 Mastodon 服务文件到对应的位置了,这一步在原来的搭建教程里也有说,大家按照那里操作就可以了,我这里再说一下只是为了给大家提个醒,免得有人忘了这一步,具体命令如下:

cp /home/mastodon/live/dist/mastodon-*.service /etc/systemd/system/

注意,这个命令需要用 root 权限来执行。

3.4 最后的预编译和正式启动

完成上面的一些步骤之后,基本上就算是迁移完成了,剩下的就是在新服务器上来操作预编译 Mastodon 让它跑起来了,具体命令如下:

RAILS_ENV=production bundle exec rails assets:precompile

根据官方文档所说,我们还需要重建下时间线:

RAILS_ENV=production ./bin/tootctl feeds build

完成上面的步骤之后,别忘了激活和启动我们的 Mastodon 服务:

systemctl daemon-reload
systemctl start mastodon-web mastodon-sidekiq mastodon-streaming
systemctl enable mastodon-web mastodon-sidekiq mastodon-streaming

最后,重载一下 Nginx 好让我们复制过来的虚拟主机配置文件生效就可以了:

lnmp nginx reload

四、结束

做完上面的事情之后,不出意外你的 Mastodon 已经在新服务器上正常的运行起来了,剩下的事情就很简单了,到 DNS 服务商那边把域名的 IP 记录修改成新服务的 IP 就行了,由于有时候 DNS 记录刷新需要一定的时间,视情况可能要等上一下子才可以打开迁移后的网站,具体看 DNS 记录的 TTL 是怎么设置的。

好了,说到这里就差不多啦,其实我感觉迁移没什么困难的,作者写的官方文档可以说是非常详细了,我这最多也就是把人家的教程中文化了下,再加了点适配自己教程的内容,实际写出来也没花太多的时间。

最后再给大家提醒下,因为我这个教程是按照我原先的搭建教程来写的,和官方教程不同的地方主要是 LNMP 和 SSL 证书这块,这部分如果你跟我不同记得依据自己的情况来修改,至于其它地方和官方教程是基本一样的可以放心参考。

结束,撒花*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。

说点什么
欢迎评论!不想写邮箱的请填写 [email protected] 哦!
支持Markdown语法
好耶,沙发还空着ヾ(≧▽≦*)o
Loading...