从魔豆文库专业版 v3.3 版本起支持。

天翼云对象存储ZOS / 亚马逊对象存储AWS

天翼云对象存储遵循的是亚马逊的对象存储协议,因此当前针对天翼云对象存储的配置,对亚马逊云AWS对象存储同样有效!

当前,以演示站点域名moredoc.mnt.ltd和对象存储绑定的域名static.moredoc.mnt.ltd来作为配置演示,其他配置项仅作为参考。

步骤

1. 开通天翼云对象存储ZOS

地址:https://www.ctyun.cn/products/zos

开通与您服务器所在区域的对象存储,以便文件传输时走内网,提升存储效率和节约流量费用!

2. 创建私有 Bucket

在存储控制台,选择对象存储创建私有bucket,如截图所示:

天翼云对象存储ZOS / 亚马逊对象存储AWS - 图1

天翼云对象存储ZOS / 亚马逊对象存储AWS - 图2

3. 创建访问密钥

在您的存储控制台的对象存储,右上角Access Key管理创建和获取对象存储的密钥。

天翼云对象存储ZOS / 亚马逊对象存储AWS - 图3

4. 配置

点击您创建的bucket,进入到bucket概览页面,可以看到您的endpoint。

天翼云对象存储ZOS / 亚马逊对象存储AWS - 图4

我们从上述截图看到,endpoint是公网域名 xinan2.zos.ctyun.cn ,在文件传输时,会占用服务器的公网带宽,因此需要换成内网的,所以选择 xinan-2-internal.zos.ctyun.cn 作为内网的endpoint。

同时,需要注意的是,天翼云对象存储和亚马逊对象存储,都需要配置区域(region)参数,见region列表: https://www.ctyun.cn/document/10026735/11055382 。而当前主流的对象存储,已将region这个概念弱化成了区域域名的概念了,为了与主流的对象存储配置兼容,我们需要在 endpoint 加上 region 参数。如原本endpoint是xinan-2-internal.zos.ctyun.cn,且其对应的region是200000002927,因此此时的endpoint配置应该是:200000002927.xinan-2-internal.zos.ctyun.cn,魔豆文库程序会自动拆解该配置转成正确的配置。

修改 app.toml 下的cloudStore

  1. [cloudStore]
  2. # 存储类型,填aws,即天翼云对象存储ZOS,也是亚马逊对象云存储
  3. storeType = "aws"
  4. # 存储绑定的域名,带 http:// 或 https:// ,可以为空。
  5. domain = "https://static.moredoc.mnt.ltd"
  6. # 天翼云对象存储的 Access Key
  7. accessKey = "Access Key"
  8. # 天翼云对象存储的 Secret Key
  9. secretKey = "Secret Key"
  10. # 对象存储的bucket
  11. bucket = "moredoc-test"
  12. # 对象存储 endpoint,进入 bucket 的【概览】可以看到
  13. endpoint = "200000002927.xinan-2-internal.zos.ctyun.cn"

5. 迁移与重启

迁移本地的 uploadsdocuments 到对象存储

  1. ./moredoc migrateCloudstore

重启文库程序。

6. Nginx反向代理配置到对象存储

为了让https://static.moredoc.mnt.ltd可以通过内网访问对象存储,我们需要做下反向代理配置。如图:

天翼云对象存储ZOS / 亚马逊对象存储AWS - 图5

配置示例如下:

  1. ...
  2. location ^~ / {
  3. proxy_pass http://xinan-2-internal.zos.ctyun.cn/moredoc-test/;
  4. proxy_set_header Host xinan-2-internal.zos.ctyun.cn;
  5. ...
  6. }
  7. ...

务必需要强调的是,Host 需要配置为当前bucket的内网endpoint:xinan-2-internal.zos.ctyun.cn,且 proxy_pass最后需要加上当前bucket名称,如 http://xinan-2-internal.zos.ctyun.cn/moredoc-test/

app.toml配置参考

完整配置参考示例如下:

  1. # 程序运行级别:debug、info、warn、error,生产环境使用 info及其以上级别
  2. level = "debug"
  3. # 日志编码方式,支持:json、console
  4. logEncoding = "console"
  5. # 程序运行端口
  6. port = "8880"
  7. # 数据库配置
  8. [database]
  9. driver = "mysql"
  10. dsn = "root:root@tcp(localhost:3306)/moredoc?charset=utf8mb4&loc=Local&parseTime=true"
  11. showSQL = true
  12. maxOpen = 10
  13. maxIdle = 10
  14. # JSON Web Token 配置
  15. [jwt]
  16. # 生成 token 的密钥,请务必修改!!!
  17. secret = "moredoc"
  18. # token 过期时间
  19. expireDays = 365
  20. [cloudStore]
  21. # 存储类型,填aws,即天翼云对象存储ZOS,也是亚马逊对象云存储
  22. storeType = "aws"
  23. # 存储绑定的域名,带 http:// 或 https:// ,可以为空。
  24. domain = "https://static.moredoc.mnt.ltd"
  25. # 天翼云对象存储的 Access Key
  26. accessKey = "Access Key"
  27. # 天翼云对象存储的 Secret Key
  28. secretKey = "Secret Key"
  29. # 对象存储的bucket
  30. bucket = "moredoc-test"
  31. # 对象存储 endpoint,进入 bucket 的【概览】可以看到
  32. endpoint = "200000002927.xinan-2-internal.zos.ctyun.cn"