将上传和备份迁移到 DigitalOcean 块存储

那么,您想将所有上传和备份迁移到 DigitalOcean 块存储吗?

不过,在您进行此操作之前,您可能更希望考虑 https://meta.discourse.org/t/using-object-storage-for-uploads-s3-clones/148916。它的设置不复杂,并提供其他一些优势。

在 DigitalOcean 上设置 Discourse 实例

使用我们的官方指南在 DigitalOcean 上设置 Discourse 实例。

向您的云主机添加一个卷

块存储卷添加到您的云主机。记下卷的名称。在我的情况下,卷的名称是 volume-nyc1-05

确保卷已格式化并挂载到 /mnt/volume_nyc1_05

/var/discourse/shared 移动到卷

为获得最佳性能,我们将把 postgres_data 保留在主驱动器上,并将其余数据移动到新附加的卷上。

以 root 用户身份登录,从您的服务器运行以下命令:

mv /var/discourse/shared/standalone/postgres_data /var/postgres_data_discourse
mv /var/discourse/shared /mnt/volume_nyc1_05

请确保将 volume_nyc1_05 替换为您的卷的名称。

编辑 app.yml 以反映更改

在您首选的编辑器中打开 /var/discourse/containers/app.yml 文件,并找到以下代码块:

## The Docker container is stateless; all data is stored in /shared
volumes:
  - volume:
      host: /var/discourse/shared/standalone
      guest: /shared
  - volume:
      host: /var/discourse/shared/standalone/log/var-log
      guest: /var/log

将上述代码块替换为:

## The Docker container is stateless; all data is stored in /shared
volumes:
  - volume:
      host: /mnt/volume_nyc1_05/shared/standalone
      guest: /shared
  - volume:
      host: /mnt/volume_nyc1_05/shared/standalone/log/var-log
      guest: /var/log
  - volume:
      host: /var/postgres_data_discourse
      guest: /shared/postgres_data

请确保将 volume_nyc1_05 替换为您的卷的名称。

保存 app.yml 文件并重建容器。

/var/discourse/launcher rebuild app

:tada: 大功告成!

就是这样,您所有的上传和备份现在都已迁移到 DigitalOcean 块存储。


鸣谢

本指南的灵感来源于 @sam此处的建议。

37 个赞

我正在尝试遵循 Hetzner 的一种类似存储的方法,但我担心这会影响我们的整体性能。

我了解到它提供的 SSD 速度只有 1/3,但我想知道这在日常使用中上传文件和显示 Discourse 实例中的文件方面是否存在显著差异,因为我不确定这 1/3 的速度是否真的会产生影响,或者是否足以满足上传文件的需求。

当然,最终结果取决于我们的 CPU、RAM 以及使用的文件系统和块大小。

有人愿意分享他们的经验吗? :slight_smile:

感谢指南!

在执行此操作之前,您应该关闭液滴吗?我通常会假设是的,但既然它只是在改组上传?

不。只需创建空间并按照说明进行安装。

感谢您的指导。在我完成所有步骤并重新启动论坛后,我们不断发现图片未能加载。因为它有一个不正确的路径。

有什么方法可以诊断这个问题并进行一些自动修复吗?

你最终解决问题了吗?

1 个赞

没有 :frowning: 还没能修复它。

1 个赞