# 外部存储

外部存储的工作原理就像在您的计算机上添加一个网络驱动器。上传的文件将被存储在这个外部存储,而不是在您的网站本地硬盘驱动器,这有助于利用您的服务器负载,并提供一个更可靠的网站。

# 支持的 APIs

# 工作原理

外部存储分两层工作。

  • 后端: 将对象上传到目标服务器
  • 前端:直接访问上传的对象

# 存储 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-1BHS-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