# 外部存储
外部存储的工作原理就像在您的计算机上添加一个网络驱动器。上传的文件将被存储在这个外部存储,而不是在您的网站本地硬盘驱动器,这有助于利用您的服务器负载,并提供一个更可靠的网站。
# 支持的 APIs
- Alibaba Cloud OSS
- Amazon S3
- Backblaze B2
- FTP
- Google Cloud
- Local
- Microsoft Azure
- OpenStack
- S3 Compatible
- SFTP
# 工作原理
外部存储分两层工作。
- 后端: 将对象上传到目标服务器
- 前端:直接访问上传的对象
# 存储 URL
Chevereto 使用给定的 存储 URL 将每张图片映射到对应的存储服务器,它作为定位该文件的基础 URL。
例如,将 Amazon S3 与存储配合使用:
属性 | 值 |
---|---|
Bucket | my-bucket |
Storage URL | https://s3.amazonaws.com/my-bucket/ |
Stored image | my-bucket/image.jpg |
Mapped URL | https://s3.amazonaws.com/my-bucket/image.jpg |
CNAME
存储 URL 是 Chevereto 用来映射存储在给定存储空间的文件的 URL。这可以是直接URL,CNAME URL,CDN URL 或任何解析请求图片的 URL。这意味着你可以自定义你想使用的存储的 URL。建议您使用与您的域名相匹配的URL,所以尽量利用 CNAME记录 (opens new window)。
另一个例子,亚马逊 S3 基于文件夹的存储和自定义 CNAME(img.domain.com
):
属性 | 值 |
---|---|
Bucket | my-bucket |
Storage URL | https://img.domain.com/my-bucket/ |
Stored image | /my-bucket/2020/10/06/image.jpg |
Mapped URL | https://img.domain.com/my-bucket/2020/10/06/image.jpg |
URL 解析
映射的 URL 必须解析为给定的资源。Chevereto 不会解析这个 URL,它只会处理映射。请查看外部存储的文档来检索这个 URL,或者如何定制它来使用你自己的域名。
# 外部存储使用 CDN
轻松地为您要使用的每个存储添加一个 CDN。你只需要到你的 CDN 提供商那里,为源存储 URL 创建一个拉取区域。
如果你使用的是 Amazon S3,源 URL 将是这样的:
https://s3.amazonaws.com/my-bucket/
所以你的 CDN 网址将是这样的:
https://pullzone-url.at.cdn-service.com/
而CNAME记录会让你最终得到这样的结果:
https://s3-cdn.mydomain.com/
# 新建外部存储
如果存储凭证正确,存储将被添加,然后可以切换激活复选框来启用或禁用该存储。当没有存储设置为激活时,系统将使用本地存储。
# 外部存储 API
# Alibaba Cloud OSS
阿里云 OSS API 允许将图片上传到 阿里云对象存储(OSS) (opens new window).
# Amazon S3
Amazon S3 API 允许将图像上传到 Amazon S3 (opens new window) bucket。您需要一个 Amazon Web Services (opens new window) (AWS)账户。
- 要设置 Amazon S3,请执行以下操作:
- 从 身份和访问管理 (opens new window) 控制台创建访问凭证。
- 单击 “Create New Users”(创建新用户),确保启用 “Programical Access”(程序访问)
- 在权限上,关联 AmazonS3FullAccess
- 在流程结束时保存 用户名称、**访问密钥ID **和 秘密访问密钥
- 从 S3控制台 (opens new window) 中创建一个 bucket
- 单击 “Create a Bucket”(创建存储桶) 并继续创建存储桶
- 在权限上,确保取消选中 "Block new public ACLs"(阻止新的公共ACL) 和 "Remove public access"(删除公共访问) (公共访问设置)
- 保存 桶名称 和 区域
- 您不需要设置日志记录
如果您想使用自定义域名,请按照 CNAME (opens new window) 文件中的要求进行。
# Backblaze B2
Backblaze B2 API允许将图片上传到 Backblaze的云存储系统 (opens new window)
# FTP
FTP API允许将图像上传到实现 File Transfer Protocol (opens new window) 的服务器。
# SFTP
SFTP API允许上传图片到实现 SSH文件传输协议 (opens new window) 的服务器。
# Google Cloud
The Google Cloud API 允许上传图片到谷歌云存储桶。您需要一个 Google Cloud (opens new window)服务帐户 并 激活云存储 (opens new window)。
- 设置谷歌云存储:
- 创建一个项目
- 进入 “API&Services” 仪表板,确认 “Google Cloud Storage JSON API” 已启用
- 进入 “API&Services” > “Credentials”,点击 “Create Credentials”,然后点击 “Service Account Key”
- 确保使用以下设置:
- 选择您的服务帐户或创建一个新的帐户
- 秘钥类型 : JSON
- 您的浏览器将开始下载 JSON 密钥文件。保存 文件内容
- 转到 “Storage”(存储),然后单击 “Browser”(浏览器)
- 点击 "Create bucket"(创建存储桶) 按钮创建存储桶。保存 存储桶名称
# Local
本地接口 允许将图片上传到服务器中的任意文件系统路径。
# Microsoft Azure
Microsoft Azure API 允许将图片上传到 Microsoft Azure Storage (opens new window)
# OpenStack
OpenStack API 允许上传图片到 OpenStack (opens new window) 容器。
- RunAbove 的 OpenStack 配置:
- Identity URL : https://auth.Runabove.io/v2.0 (opens new window)
- Username : 你的 RunAbove 用户名
- Password : 您的 RunAbove 密码
- Region :
SBG-1
或BHS-1
这是您的容器创建的数据中心 - Container : 您创建的容器名称
- Tenant id : 保留为空
- Tenant name: 您的
项目id
,位于左侧 OpenStack Horizon(当前项目)) - URL: 您访问容器的 URL (参见 RunAbove CNAME (opens new window))
# S3 Compatible
S3 兼容 API 允许上传图片到任何实现 Amazon S3 标准的服务器,也就是 "AWS S3 API"。其配置与 Amazon S3 完全相同,但需要提供提供者端点。
支持S3 API的供应商有:
- Ceph
- DigitalOcean Spaces
- Dreamhost Cloud Storage
- IBM COS S3
- Minio
- Scaleway
- StackPath
- Tencent Cloud Object Storage (COS)
- Wasabi