今天是六一儿童节呀,赶在今天我也水一篇 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 -Fc -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 root@IP -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 证书这块,这部分如果你跟我不同记得依据自己的情况来修改,至于其它地方和官方教程是基本一样的可以放心参考。
结束,撒花*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。