无法查看或上传图片

我最近将论坛从一个服务器迁移到了另一个服务器。当前版本为 2.6.0.beta2,其他功能一切正常,但之前上传的图片无法显示,用户也无法上传新图片。此外,用户也无法更新个人资料头像。

我尝试了本论坛中提到的一些方法,但似乎都没有对我生效。需要帮助!

1 个赞

您之前使用的是 S3 还是某种类似的 S3 兼容存储?

是什么促使了这次变更?服务器有何不同,新服务器又是如何构建的?

2 个赞

我从未在此服务器上使用过 S3,甚至没有用于测试。

我更换服务器是因为想要更改区域。新服务器与旧服务器在所有方面都相同,唯一的区别是区域。我之前使用的是 CloudFront CDN,但在迁移后,我清除了整个缓存。

我可以看到旧图片在新服务器上仍然可用,因为它们包含在备份中,但问题依然存在。

在制作或恢复备份之前,您是否已将旧实例升级到相同级别?

是的,两台服务器的情况完全一致。我严格按照迁移步骤操作,并查阅了其他用户在迁移过程中遇到的问题。

问题不仅在于我无法查看旧图片,用户也无法上传新图片。我猜测可能是某个图像驱动出了问题(抱歉,这个猜测比较模糊)。

这是使用标准安装吗?

是的,按照 discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub 中提到的步骤操作即可。

好的,总结一下:您的旧服务器使用的是标准安装。您已在以相同方式构建的系统上重新安装并恢复了备份。

如果您查看某个页面的源代码,图片 URL 是什么样的?这与 /var/discourse/standalone/web-only/uploads/default 目录中的上传文件有何不同?

如果您尝试直接打开图片链接,会发生什么?

这两次安装是否都使用了双容器架构?

由于目前缺乏明确的复现步骤,我们将此问题从 bug 重新归类为 #support。一旦我们确定根本原因,可能需要将其作为 bug 提交,但目前情况并非如此。

看起来我的论坛图片已上传到 /var/discourse/shared/standalone/uploads/default/optimized/1X。这里存储了大量具有多种分辨率的图片,但论坛中显示的图片文件名与目录中的文件名并不一致。

访问 https://forumcdn.domain.com/uploads/default/optimized/1X/55cfd1bf40edcb3ac19d3e412a5ad63f93c0a854_2_225x250.png 时返回 404 错误,但将图片文件名替换为目录中实际存在的文件名后,链接即可正常工作。所有图片文件本身完好无损,直接打开即可查看,问题仅在于论坛中显示的文件名与实际文件名不一致。

源实例上是否启用了“在备份中包含缩略图”?

如果未启用:

在备份中包含生成的缩略图。禁用此选项会使备份文件更小,但在恢复后需要重新生成所有帖子。

这意味着您需要运行 rake posts:rebake

1 个赞

在备份中包含缩略图 已在源实例上禁用。我刚刚在 Discourse 容器中运行了 rake posts:rebake,得到了以下结果:

root@vps-app:/var/www/discourse# rake posts:rebake
Rebaking post markdown for 'default'
      628 / 628 (100.0%)
628 posts done!

为了双重确认,我清除了 CDN 缓存,但仍然无法查看任何图片。此外,我也无法上传任何图片,因此我怀疑该方案无法解决此问题。

1 个赞