我分享最近将自托管的 Discourse 实例从一个 VPS 迁移到另一个 VPS 的经历,以此向 Discourse 的创建者及其管理员社区表达“感谢”!此次迁移保留了 Let’s Encrypt SSL 和电子邮件配置。
原始安装位于 Google Cloud Platform (GCP) 的 g1-small 实例类型(1 vCPU,1.7 GB RAM),使用的是官方指南(INSTALL-cloud.md)并跟踪 tests-passed 分支。
新安装位于 Evolution Host 的“Developer”类型 KVM VPS(2 个 CPU 核心,2 GB RAM,40 GB SSD,重建时间 7 分 23 秒,月费 10 欧元)。已安装 Ubuntu Server 18.04.4 最小化版本,并配置了 1GB 交换分区(可能是基于模板)。
如果您的主机安装了额外软件,请务必移除不必要的软件(例如 Web 服务器),并确保主机安全(默认用户名、密码、sshd 配置等)。
以下内容是以 root 身份执行的终端命令,并已清除安装特定数据(请将全大写字母部分替换为您自己的信息)。欢迎在评论中提出任何更正或问题!
新主机准备
apt update && apt -y dist-upgrade
apt install -y byobu mosh htop iotop hugepages curl git && byobu-enable
hugeadm --thp-never
fallocate -l 1G /swapfile
chmod 600 /swapfile
mkswap /swapfile
echo '/swapfile swap swap auto 0 0' | tee -a /etc/fstab
echo 'vm.swappiness = 10' > /etc/sysctl.d/30-discourse-swap.conf
git clone https://github.com/discourse/discourse_docker.git /var/discourse
reboot
旧主机准备及 Discourse 文件备份
cd /var/discourse
./launcher rebuild app
./launcher enter app
discourse backup
exit
(记下您的 Discourse 备份文件名)
cp -v containers/app.yml ~
cd shared/standalone
cp -v settings.yml ~
tar cvf ~/ssl.tar ssl
tar cvf ~/letsencrypt.tar letsencrypt
cd ~
scp -C ssl.tar letsencrypt.tar app.yml settings.yml USERNAME@NEW-HOST-IP:~
scp /var/discourse/shared/standalone/backups/default/YOUR-DISCOURSE-BACKUP.tar.gz USERNAME@NEW-HOST-IP:~
exit
新主机恢复 Discourse
(将通过 scp 复制的文件移动到 root 用户的家目录)
echo 'NEW-HOST-IP YOUR-DISCOURSE-FQHN' | tee -a /etc/hosts
cd /var/discourse
cp -v ~/app.yml containers
mkdir -v shared/standalone
cd shared/standalone
cp -v ~/settings.yml .
tar xvf ~/ssl.tar
tar xvf ~/letsencrypt.tar
cd /var/discourse
./discourse-setup
(discourse-setup 应无错误完成,允许您检查所有相关配置信息)
mkdir -v shared/standalone/backups/default
cp -v ~/YOUR-DISCOURSE-BACKUP.tar.gz shared/standalone/backups/default
./launcher enter app
discourse enable_restore
discourse restore YOUR-DISCOURSE-BACKUP.tar.gz
discourse disable_restore
从本地机器测试
echo 'NEW-HOST-IP YOUR-DISCOURSE-FQHN' | tee -a /etc/hosts
访问 https://YOUR-DISCOURSE-FQHN/admin/email
在页面底部输入您的电子邮件地址以测试邮件发送,并浏览您的 Discourse 站点以确认运行状态正常。
当您确认一切正常运行后,请将 YOUR-DISCOURSE-FQHN 的 DNS A 记录更改为指向新主机的 IP 地址。