我虽不如你聪明,但刚刚亲自走了一遍流程——并在 @Pravi 的帮助下成功完成了迁移。
从 S3 上传切换回原生状态的步骤
这并非特别简单——请务必仔细处理文本和链接,否则一旦出错,清理起来会非常麻烦。不过,这完全是可以实现的。
步骤 1 - 将文件从 S3 存储桶复制到 public/uploads/default 文件夹
首先,在应用容器内安装 AWS CLI:
cd /var/discourse
./launcher enter app
sudo apt install awscli
使用你的 S3 ID 和密码配置 AWS(通常很简单):
aws configure
然后使用 aws 命令将存储桶中的所有内容复制到 public/uploads/default/:
aws s3 sync s3://my-bucket-name/ public/uploads/default/
步骤 2 - 重新映射 S3 URL
最简单的方法是找到论坛中的一张图片并检查其 URL。你需要的是直到实际文件名之前的所有部分(包括最后的 /):
discourse remap //your-images-url-until-the-filename /uploads/default/
步骤 3 - 重新烘焙帖子并重建应用:
rake posts:rebake
exit
./launcher rebuild app
步骤 4 - 关闭 S3
- 在设置中关闭 S3 上传(或者如果你是通过 app.yml 配置的,则在那里关闭)。如果你一直使用 CDN,请同时从设置中移除指向它的链接(否则实际上不会关闭)。
- 关闭你的容器。我是通过将内容迁移到一个新容器作为备份来完成的,这是第一步。
呼!完成了。到目前为止我还没有遇到任何问题。快去测试一下吧!