从魔豆文库专业版 v3.3 版本起支持。
天翼云对象存储ZOS / 亚马逊对象存储AWS
天翼云对象存储遵循的是亚马逊的对象存储协议,因此当前针对天翼云对象存储的配置,对亚马逊云AWS对象存储同样有效!
当前,以演示站点域名moredoc.mnt.ltd和对象存储绑定的域名static.moredoc.mnt.ltd来作为配置演示,其他配置项仅作为参考。
步骤
1. 开通天翼云对象存储ZOS
地址:https://www.ctyun.cn/products/zos
开通与您服务器所在区域的对象存储,以便文件传输时走内网,提升存储效率和节约流量费用!
2. 创建私有 Bucket
在存储控制台,选择对象存储创建私有bucket,如截图所示:


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

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

我们从上述截图看到,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
[cloudStore]# 存储类型,填aws,即天翼云对象存储ZOS,也是亚马逊对象云存储storeType = "aws"# 存储绑定的域名,带 http:// 或 https:// ,可以为空。domain = "https://static.moredoc.mnt.ltd"# 天翼云对象存储的 Access KeyaccessKey = "Access Key"# 天翼云对象存储的 Secret KeysecretKey = "Secret Key"# 对象存储的bucketbucket = "moredoc-test"# 对象存储 endpoint,进入 bucket 的【概览】可以看到endpoint = "200000002927.xinan-2-internal.zos.ctyun.cn"
5. 迁移与重启
迁移本地的 uploads和 documents 到对象存储
./moredoc migrateCloudstore
重启文库程序。
6. Nginx反向代理配置到对象存储
为了让https://static.moredoc.mnt.ltd可以通过内网访问对象存储,我们需要做下反向代理配置。如图:

配置示例如下:
...location ^~ / {proxy_pass http://xinan-2-internal.zos.ctyun.cn/moredoc-test/;proxy_set_header Host xinan-2-internal.zos.ctyun.cn;...}...
务必需要强调的是,Host 需要配置为当前bucket的内网endpoint:xinan-2-internal.zos.ctyun.cn,且 proxy_pass最后需要加上当前bucket名称,如 http://xinan-2-internal.zos.ctyun.cn/moredoc-test/
app.toml配置参考
完整配置参考示例如下:
# 程序运行级别:debug、info、warn、error,生产环境使用 info及其以上级别level = "debug"# 日志编码方式,支持:json、consolelogEncoding = "console"# 程序运行端口port = "8880"# 数据库配置[database]driver = "mysql"dsn = "root:root@tcp(localhost:3306)/moredoc?charset=utf8mb4&loc=Local&parseTime=true"showSQL = truemaxOpen = 10maxIdle = 10# JSON Web Token 配置[jwt]# 生成 token 的密钥,请务必修改!!!secret = "moredoc"# token 过期时间expireDays = 365[cloudStore]# 存储类型,填aws,即天翼云对象存储ZOS,也是亚马逊对象云存储storeType = "aws"# 存储绑定的域名,带 http:// 或 https:// ,可以为空。domain = "https://static.moredoc.mnt.ltd"# 天翼云对象存储的 Access KeyaccessKey = "Access Key"# 天翼云对象存储的 Secret KeysecretKey = "Secret Key"# 对象存储的bucketbucket = "moredoc-test"# 对象存储 endpoint,进入 bucket 的【概览】可以看到endpoint = "200000002927.xinan-2-internal.zos.ctyun.cn"