你好,
我有点卡住了,感到困惑,希望有人能帮帮我。
我最初安装了 Bitnami,但意识到这会给我带来很多麻烦,所以我使用标准安装重新安装了。
我能够恢复我的备份,一切都很好,尽管我从 2.8 升级到了 2.9 beta。
我再次在我的 Google Bucket 上测试了我的备份,它仍然运行得非常好。
请注意,所有 S3 配置都是通过 Web 界面完成的,而不是通过环境变量。
出于 GDPR 原因,我在欧洲创建了一个新的备份存储桶(我们称之为 discourse-backup-eu),现在我已经能够更改环境变量,我设置了 DISCOURSE_S3_ENDPOINT:https://storage.googleapis.com,重建了应用程序,在 Web 界面中更改了备份存储桶名称,重新运行了备份,我非常高兴地看到备份文件出现在我在欧洲的新备份存储桶中。
现在我想让上传文件到另一个存储桶,并避免填满我的虚拟机磁盘空间。
所以我配置了一个新的存储桶(我们称之为 discourse-uploads),将其设置为公共,并将 Storage Legacy Bucket Owner 角色授予了我在该新存储桶上的服务帐户。
然后,我按照此处的说明,向我现有的负载均衡器(我们称之为 https://www.example.com)添加了一个规则,使用启用了 Cloud CDN 的后端存储桶。规则是 /discourse-uploads/* 指向 discourse-uploads 存储桶。
我用存储桶根目录下的一个 test.jpg 测试了我的 CDN,但无法通过 https://www.example.com/discourse-uploads/test.jpg 访问它,我不得不创建了一个名为 discourse-uploads 的子文件夹,将 test.jpg 移到里面,现在我可以通过 https://www.example.com/discourse-uploads/test.jpg 看到我的测试图片。
在 Web UI 中,我更改了“s3 upload bucket”下的虚拟存储桶名称(在设置备份时我被迫将其设置为一个虚拟名称)为 discourse-uploads,将 CDN URL 填为 https://www.example.com/discourse-uploads,并勾选了“enable s3 uploads”。
从那时起,如果我尝试上传图片,我会在浏览器窗口中看到一个弹出窗口,显示“无效参数”(来自一个 422 错误,其 JSON 内容基本相同)。
我尝试重新烘焙所有帖子,但没有效果,我仍然收到错误。
所以我想,我应该尝试使用环境变量而不是 Web UI。
并使用以下配置:
DISCOURSE_USE_S3: true
DISCOURSE_S3_REGION: whatever
DISCOURSE_S3_INSTALL_CORS_RULE: false
FORCE_S3_UPLOADS: 1
DISCOURSE_S3_ENDPOINT: https://storage.googleapis.com
DISCOURSE_S3_ACCESS_KEY_ID: MY_KEY_ID
DISCOURSE_S3_SECRET_ACCESS_KEY: MY_ACCESS_KEY
DISCOURSE_S3_CDN_URL: https://www.example.com/discourse-uploads
DISCOURSE_S3_BUCKET: discourse-uploads/discourse-uploads
DISCOURSE_S3_BACKUP_BUCKET: discourse-backup-eu
DISCOURSE_BACKUP_LOCATION: s3
我重建了应用程序。
然后我无法再打开 discourse,因为没有一个资产被上传到存储桶,并收到 404 错误。
https://www.example.com/discourse-uploads/assets/admin-31467dc73634cbfb81799737c43df0e2939307d893ef32713f1d0770bcb3532c.br.js
我曾认为直接上传到存储桶的子文件夹有点牵强,尽管 OP 建议它有效(至少对于备份存储桶)。
将环境变量更改为
DISCOURSE_S3_BUCKET: discourse-uploads
(考虑到之后我可以玩主机规则来避免上传到子文件夹)
并重建以查看是否有任何东西被上传,但没有任何东西被上传到存储桶,并且 discourse 由于 404 错误仍然无法打开。
所以我的问题是:
- Web UI 和环境变量会冲突吗?
- 资产应该何时上传到存储桶?
- 我该如何调试这个问题?我在日志中看不到任何错误。
- 是否可以在配置中设置存储桶的子文件夹?
- 一旦这奏效,之前上传的图片会被传输到存储桶吗?如果我重新烘焙,之前上传的图片的 URL 会是什么样的?
谢谢!