需要帮助配置 CDN

好吧,我最终还是决定迁移我的上传文件。作为一名新手,我想分享一些建议和疑问,希望能帮助到其他有类似经历的人,或者作为反馈提供给大家。虽然设置 S3 存储桶的文档很完善,但关于 CDN 的部分似乎就少得多了。例如:

  • 对于我这个非程序员来说,花了一点时间才明白 CDN 有两种使用模式:一种用于上传文件,另一种则是用于“资源”(assets),我猜是指 CSS 和网站设计所需的视觉元素?
  • 无论是哪种类型的 CDN 设置,如果能提供一些文档或指导会更好。是推(push)还是拉(pull)模式?是否需要限制存储桶访问权限?对象存储指南似乎假设每个人都已经知道如何设置这些。
  • 对我来说,UI 管理设置与环境变量之间的重叠也让人有些困惑。两者都可以使用,但后者更受推荐。目前我只关注上传部分,发现其实只需要对象存储指南中环境变量的一部分?(我想先避免启用资源 CDN,因为不知道如何配置它——是推还是拉?)
  • 我也不太清楚如何为 CDN 启用自定义域名。CNAME 记录我懂,但如何启用 SSL 呢?我是否需要获取 Let’s Encrypt 证书,并以某种方式与 AWS CDN 配合使用?
  • migrate_to_s3 脚本执行失败并退出,提示我带上追踪信息重试。我尝试了几次,还手动重新生成了帖子。最后它终于完成了,并愉快地显示“完成!”,看起来所有上传文件现在都通过 CDN 加载了。
  • 我没料到的是,所有上传文件仍然保留在 Discourse 服务器上。这是预期的行为吗?我原以为迁移意味着 rake 任务也会删除本地副本?或者这会在稍后通过某种过期文件清理流程完成?

很高兴我迈出了这一步(看来我也没那么胆小)。网站运行仍然良好,但仍有一些待解决的问题:

  • 是否启用受限存储桶访问权限(是/否)
  • 删除仍驻留在服务器上的上传文件,以便使用更小的备份
  • 为 CDN 的自定义域名配置 SSL 证书
  • 如何为资源 CDN 设置推(还是拉?)模式?这只会进一步提升网站速度吗?

将它们作为环境变量(ENV)的好处在于,即使在恢复网站之前它们就已经存在。因此,如果你所有的 S3 配置都保存在 YML 文件中,并且备份也存储在 S3 上,那么恢复网站所需的仅仅就是那个 YML 文件。你只需重新构建容器并执行命令行恢复即可。

使用环境变量的另一个好处是,这些设置会从用户界面(UX)中隐藏,因此没有文件系统访问权限的管理员无法查看这些设置(当然也无法修改它们)。但这也可能带来不便,因为如果你需要查看或修改这些设置,却无法通过用户界面进行操作。:man_shrugging:

直接拉取即可,无需复杂操作。