我刚刚尝试通过网页更新将 我的 Discourse 安装 升级到最新的测试版(2.4.0 beta 11),但现在无法访问(您可以亲自尝试,会返回 HTTP 500 错误)。
背景
我安装的版本仍然是 2.4.0 beta 6,我试图升级到 2.4.0 beta 11。
我认为我的安装相当标准,不记得是否有任何自定义插件(现在也无法查证),但最多只有 1-2 个。我保留了大多数默认的 Discourse 设置。
我做了什么
我点击了更新通知邮件中的一键浏览器更新链接,将我带到了 /admin/upgrade。
根据网页更新器,我必须首先进行一些 docker manager 更新,然后才能更新实际的 Discourse 版本,所以我选择了那个选项。一些操作运行了大约一半进度后,在网页日志输出屏幕上方出现了一条消息,提示升级过程中出现问题,我应该检查日志。我浏览了日志,但没有直接发现任何明显的问题。遗憾的是,我没有保存日志,而是简单地重新加载了页面,希望也许可以重试安装,并假设失败导致升级已回滚。
有趣的是,admin/upgrade/ 页面随后告诉我,docker_manager 已是最新,不再需要升级,所以我(很可能是错误地)认为升级确实成功了,错误消息只是一个 bug。我还检查了我的论坛是否仍在运行,它确实在运行,似乎没有任何问题。
现在我可以升级 Discourse 安装本身了(之前是灰色的),所以我这样做了。同样,日志被记录到日志输出中,我没有太在意,进度条大约填充了一半后,日志输出上方显示了类似的错误消息,提示某处出了问题。
我想,我会像之前一样,重新加载页面(再次,遗憾的是我没有保存日志)。正如预期的那样,Discourse 现在被列为“已是最新”。
这是我在 admin/upgrade/ 下目前看到的内容:
但实际的论坛不再工作,仅返回 500 错误。
仍然有效的部分
/admin/upgrade/仍然有效,并显示 Discourse 已是最新。- 我还可以点击“进程”选项卡并获取运行中的进程列表。
但即使是“备份”选项卡也已经返回 500 错误,/admin 也是如此。除了 /admin/upgrade/ 下的两个选项卡外,我还没有找到论坛中任何有效的部分。
如何恢复?
我不知道出了什么问题,也不知道该从哪里开始。我甚至不知道如何在没有网页界面的情况下访问日志以查明错误。Discourse 安装托管在 Digital Ocean 上,我可以 ssh 进入机器并可能进入容器,但我不知道在哪里查找日志。
如果能指点我哪里查找日志,将不胜感激。
目前,我最好的想法是恢复到备份,并丢失上次备份之后发布的所有内容(幸运的是,流量不大,所以丢失一天的内容是可以接受的)。
我目前的计划和我所缺少的
我已经设置 Digital Ocean 从 Droplet 进行每周备份,我相信我的 Discourse 安装已设置为每日备份。我从未配置过 S3,所以这些备份应该仍然保存在本地。Digital Ocean Droplet 备份是 5 天前的,但我宁愿不丢失最近几天的内容。
我的大致计划基本上是通过备份回退到已知的正常状态,具体步骤如下:
- 下载今天/昨天的 Discourse 备份。
- 通过 Digital Ocean 将整个 Droplet 回滚到 5 天前的最后一个备份,这样我就有了一个正常工作的 Discourse 安装。
- 导入下载的备份以恢复内容(减去上次 Discourse 备份之后发生的内容)
我可以通过 DO 执行回滚(步骤 2),并在到达那一步时弄清楚如何导入现有备份(步骤 3),但我不知道如何在没有网页界面且 /admin/backups/ 返回 HTTP 500 错误的情况下获取备份。
我必须在哪里查找以通过 SSH 找到备份?在通过 DO 回滚到旧的 Droplet 备份后,我需要做什么才能恢复它?
在论坛中搜索时,我只找到了关于将备份托管在 S3 上的主题,但没有提到当它们本地存储时 在哪里。
