我将尝试总结我对这些问题的回答:
- Web UI 和环境变量会冲突吗?
- 资产应该何时上传到存储桶?
通过将此代码段添加到 app.yml 的 hook 部分,它将在after_assets_precompile(在重建应用程序期间)之后上传。
- 我该如何调试这个问题?日志中没有显示任何错误
通过运行:
cd /var/discourse
sudo ./launcher enter app
sudo -E -u discourse bundle exec rake s3:upload_assets --trace
- 是否可以在配置中设置存储桶的子文件夹?
我真的需要为上传和备份使用单独的存储桶吗?
不,您不必这样做,但这通常是最简单的设置方式。本质上,您需要使用两个不同的存储桶或为备份存储桶设置一个前缀。例如,以下组合将起作用:
- 不同的存储桶
- s3_upload_bucket:
your-uploads-bucket- s3_backup_bucket:
your-backups-bucket
- 不同的前缀
- s3_upload_bucket:
your-uploads-bucket/uploads- s3_backup_bucket:
your-uploads-bucket/backups
- 一旦这奏效,之前上传的图片会被传输到存储桶吗?如果我重新烘焙,之前上传的图片的 URL 会是什么样的?
我已经在我的 Discourse 实例中启用了 S3 上传(已经运行了一段时间);我该如何处理现有的本地上传?
要将现有上传迁移到 S3,您可以执行几个 rake 任务。要执行此操作,您需要 SSH 访问权限、root 权限,并且已进入 discourse 应用程序(如管理批量操作中所述)。哦,而且您必须在 app.yml 中设置一些环境变量。这不适合胆小的人。
完成所有这些之后,您就可以执行 rake 任务了:
rake uploads:migrate_to_s3 rake posts:rebake完成这些任务后(并且上传运行良好),您就不再需要将上传包含在备份中。作为奖励,您将能够从命令行恢复备份,以防发生灾难(只需将 app.yml 的副本保存在某处)。