将 Discourse 网站迁移到另一个 VPS 使用 rsync

今天我迁移到了一个新的 VPS,我想分享一下我的经验,因为最近似乎有不少人遇到了旧版本操作系统阻止更新的问题 :blush:

我在 Digital Ocean 上,所以创建了一个新的 droplet。

旧 VPS = Ubuntu Server 18.04.6 LTS

新 VPS = Ubuntu Server 23.10

我在新 VPS 上进行了常规的系统维护 - 请根据自己的情况进行修改:

Apt-get update

Apt-get upgrade

Apt-get install fail2ban

ufw default deny incoming

ufw default allow outgoing

ufw allow ssh

ufw allow http

ufw allow https

ufw enable

然后我为 Discourse 创建了一个新的空目录:

sudo mkdir -p /var/discourse

然后我安装了 Docker:

wget -qO- https://get.docker.com/ | sh

然后我将我的 DNS TTL 从 30 分钟更改为 10 分钟(GoDaddy 允许的最小值)。

在我的旧服务器上,我下载了昨晚 Discourse 数据库备份的本地副本(本地备份永远不嫌多)。我还将 app.yml 的副本下载到了我的本地电脑。

正如上面一些人建议的那样,我进行了“root 到 root”的 rsync。我使用了 IP 地址而不是主机名,这样可以避免任何 DNS 混淆。同样如上建议,我使用了 -avz 选项:

rsync -avz root@old.ip.address.here:/var/discourse /var

供参考,我的 discourse 文件夹是 25GB。

从旧服务器到新服务器的 rsync 大约花费了 25 分钟。这只是在同一个 LON1 区域内的两个 Digital Ocean droplet 之间进行的。您的体验可能会有所不同。

rsync 之后并尝试重建时,我遇到了与 @piratdavid 相同的错误,关于 postgres database system is shut down

所以我停止了旧 VPS 上的应用程序:

./launcher stop app

然后又进行了一次 rsync,这次只同步了更改:

rsync -avz --delete root@old.ip.address.here:/var/discourse /var

然后我再次启动了旧的 Discourse 应用程序,并非常迅速地将其置于维护模式 - 这样人们仍然可以访问它,并会看到常规的维护警告消息。

这还为我在新 VPS 上工作争取了一些时间 :blush:

我更新了我本地电脑上的 HOSTS 文件,这样我就可以在没有浏览器警告/问题的情况下访问新 VPS 上的 discourse。

然后我在新 VPS 上运行了:

./discourse-setup

这样它就可以自动更新 app.yml 文件中的内存和 CPU 设置。

然后我在新 VPS 上进行了应用程序重建:

./launcher rebuild app

进行了一些基本测试,一切正常。

更新了 DNS - 任务完成。

感谢大家提供的详细主题 :smiley:

4 个赞