今天我迁移到了一个新的 VPS,我想分享一下我的经验,因为最近似乎有不少人遇到了旧版本操作系统阻止更新的问题 ![]()
我在 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 上工作争取了一些时间 ![]()
我更新了我本地电脑上的 HOSTS 文件,这样我就可以在没有浏览器警告/问题的情况下访问新 VPS 上的 discourse。
然后我在新 VPS 上运行了:
./discourse-setup
这样它就可以自动更新 app.yml 文件中的内存和 CPU 设置。
然后我在新 VPS 上进行了应用程序重建:
./launcher rebuild app
进行了一些基本测试,一切正常。
更新了 DNS - 任务完成。
感谢大家提供的详细主题 ![]()