旧安装升级失败

我工作的一个非营利组织有一个 Discourse 安装版本 2.9.0.beta1,当原管理员离职后,维护工作落到了我身上。当我尝试更新 SMTP 凭据时,我了解到该安装既无法重建自身,也无法通过 Web 或命令行安全升级。(如果我没有在开始工作前对实例进行热备份,这将是一个糟糕的时刻。)问题似乎发生在 Ruby 的较深层级,如果日志有帮助,我可以捕获它们。

我以为它可能太旧了,无法顺利更新,所以我尝试了一个恢复过程,创建了一个新的 Discourse 实例,然后将论坛的最新备份加载到其中,但这个过程也以不确定的方式失败了,在升级过程无响应之前,我遇到了我认为是数据库列错误。

从我们目前的状况来看,最好的处理方式是什么?论坛目前还能正常运行,但我既无法升级,也无法使用备份。我应该继续尝试恢复,还是应该加倍努力升级并捕获日志来开始,或者是否有我没看到的第三种选择?

您需要迁移到一个新的虚拟机。您的操作系统很可能太旧,无法升级到支持的 Docker 版本。

最好迁移到一个拥有更新、更快、更便宜硬件的新虚拟机。

您可以参考 使用 rsync 将 Discourse 站点迁移到另一台 VPS

如果您想付费请人代劳,可以通过 dashboard.literatecomputing.com 联系我。

嗯。

Docker 版本似乎并未影响 Ruby 构建失败的原因,但也有这种可能性。重建过程中涉及的 Docker 拉取操作似乎没有出现任何异常的失败状态。不过,这看起来确实是我可以尝试的方法。感谢您的回复!

1 个赞

cat /etc/issue 显示什么?

还有

docker --version

root@ip-[...]:~# cat /etc/issue
Ubuntu 16.04.6 LTS \n \l

root@ip-[...]:~# docker --version
Docker version 17.05.0-ce, build 89658be

不支持。

已过支持期。

2 个赞

感谢您的回复。我现在正在尝试迁移,不过这似乎将是一个漫长的过程。

我基本上是按照 使用 rsync 将 Discourse 站点迁移到另一台 VPS 的步骤操作,让你的站点重新运行起来了。

你的迁移过程因为在数据库中配置了 S3 备份,而不是像 为上传配置兼容 S3 的对象存储提供商 中描述的那样使用环境变量(尽管那部分是针对上传的,所以你只需要不使用 use_s3 设置,只使用备份桶和位置。编辑:然后恢复失败了,因为你的 EC2 没有写入该存储桶的权限)。

在你的站点前面有一个负载均衡器也会改变大多数人的操作方式。

而且,由于你的凭证是针对 EC2 的,而不是存储在数据库或 YML 文件中,所以恢复无法完成。

1 个赞