为博客搭建图床

为博客搭建图床

Scroll Down
请注意,本文发布日期:  237  天前,最后编辑日期:  190  天前,内容可能已经不具有时效性,请酌情参考。

一、基本概念

在为博客搭建图床之前,先了解一些概念

图床

有时候不想把所有东西全部放入博客所在的服务器,比如将图片放到另外的地方,这时候我们就需要一个叫图床的东西。图床就是一个存储图片的服务器,把图片上传到图床,通过连接就能获取到该图片。

在halo的后台博客设置-附件设置中有设置图床服务器的地址,存储位置可以是本地、又拍云、七牛云、阿里云、腾讯云、百度云等,如果你的ECS空间比较大,或者纯粹不想麻烦的话,你可以忽略该文章。由于我的ECS只有40G空间,而且要存其他杂七杂八的东西,所以没有将图片存在本地,而是使用阿里云OSS(对象存储),这样就不会占用ECS本身的硬盘空间

阿里云OSS基本概念

要想使用OSS,那么必须得了解很多概念,那么这里我只介绍我们需要用到的概念,其他的我自己也没经过太多实践,毕竟精力有限。

OSS概念:简单的理解就是个硬盘,只不过在云端上,并且提供的功能比硬盘要强大

引用官方概念: 阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。其数据设计持久性不低于 99.9999999999%(12 个 9),服务设计可用性(或业务连续性)不低于 99.995%。OSS 具有与平台无关的 RESTful API 接口,您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。您可以使用阿里云提供的 API、SDK 接口或者 OSS 迁移工具轻松地将海量数据移入或移出阿里云 OSS。数据存储到阿里云 OSS 以后,您可以选择标准存储(Standard)作为移动应用、大型网站、图片分享或热点音视频的主要存储方式,也可以选择成本更低、存储期限更长的低频访问存储(Infrequent Access)和归档存储(Archive)作为不经常访问数据的存储方式。

OSS使用场景:

  • 社区、多媒体分享站、电子商务、等各类形式规模的网站站长
  • APP应用、软件应用开发者
  • 游戏开发企业
  • 硬件厂商配套应用开发者
  • 大规模数据存储需求的用户

OSS适合存储论坛网站与软件应用中的附件、高清图片、音视频、备份文件等,及各种APP应用、多终端同步软件、网盘下载站的文件存储

OSS购买资源包

bucket(存储空间)

Bucket是用于存储对象(Object)的容器。所有的对象都必须隶属于某个存储空间。存储空间具有各种配置属性(包括地域、访问权限、存储类型等)。用户可以根据实际需求,创建不同类型的存储空间来存储不同的数据。

简单的理解:bucket就是类似硬盘的空间一样,存放一些文件夹、不同类型的文件等等

官方文档:
1.同一个存储空间的内部是扁平的,没有文件系统的目录等概念,所有的对象都直接隶属于其对应的存储空间
2.每个用户可以拥有多个存储空间
3.存储空间的名称在OSS范围内一旦创建之后无法修改名称
4.存储空间内部的对象数目没有限制

object(存储文件)

object是bucket中的文件。object由元信息、用户数据、文件名组成。object由bucket内部唯一的 Key 来标识。object元信息是一组键值对,表示了object的一些属性,比如最后修改时间、大小等信息,同时用户也可以在元信息中存储一些自定义的信息。

简单的理解:bucket中存储的不同类型的文件、文件夹等等

region(地域)

region表示OSS所处的物理位置。region在创建bucket的时候指定的,一旦指定不允许更改。bucket中的所有的object都存在该region。并且每个region,都有一个外网访问域名、ECS访问的内网访问域名。

tips:我们在访问OSS时,采用的是外网访问域名

示例:创建bucket时,选择了杭州(即region),指定之后,无法更改。杭州的外网访问域名为oss-cn-hangzhou.aliyuncs.com,杭州的ECS访问的内网访问域名为oss-cn-hangzhou-internal.aliyuncs.com.

endpoint(访问域名)

endpoint表示外部访问OSS的访问域名。即上面提到的外网访问域名和ECS访问的内网访问域名。当访问不同region时,需要不同的域名。

示例:在杭州(即region)创建了一个名为test的bucket。用户在安徽,那么访问OSS的test时,就会采用外网访问域名;如果同region的ECS访问OSS的test时,就会采用内网访问域名。

accesskey(访问密钥)

accesskey指的是访问身份验证中用到的accesskey_id和accesskey_secret。我们需要通过指定accesskey_id和accesskey_secret来向OSS中的bucket来出示身份证一样,以确保OSS中的bucket同意我们访问其中的操作(包括读、写、删除等操作)。

accesskey_id用来鉴别合法用户
accesskey_secret用来鉴别合法用户的密码

二、OSS的计费原则

我们使用OSS,就需要了解OSS哪些资源和功能需要收费,以控制OSS所产生的费用。我所用到的产生费用的计费项如下,其他费用参见OSS计费

阿里云OSS计费构成:

  • 存储费用
  • 流量费用
  • 请求费用
  • 数据处理费用

存储费用

在使用bucket之前,我们需要先在某个region去购买存储资源。OSS的存储费用可以是按量计费和包年包月。其中按量计费表示用多少扣多少,包年包月指预先购买了40G,如果超过了40G,超过的按量计费。衡量之后,我选择购买了包年包月的存储资源。

选择标准存储包-地域杭州-规格40GB-时长1年,如下图:
331.png

tips:一定要选择公共读,否则会造成博客和OSS中的bucket的链接无法对上,导致博客可以上传图片,但是无法使用图片。需要使用的话,要进行鉴权串处理,很麻烦。

流量费用

不管是从OSS读取、下载,还是删除等操作,都会产生流量。所以部分流量是收费的。我们所用到的有两种流量:

  • 外网流出流量(收费):通过互联网从 OSS 浏览或下载数据到本地端所产生的流量
  • 外网流入流量(免费):通过互联网从本地端上传数据到 OSS 所产生的流量

其中外网流出流量计费

  • 00:00-08:00(闲时):0.25元/GB
  • 8:00-24:00(忙时):0.50元/GB

请求费用

对 OSS 的操作最终都是对 OSS API 的调用。请求费用根据您调用 OSS API 接口的次数计费。因为OSS 控制台操作也是通过 OSS API 调用实现的,因此使用 OSS 控制台也会产生请求次数(0.01元/万次)

请求费用是比较便宜的,请求次数达到10000次,收取0.01元,我的博客每个月请求次数目前预估是在10000次不到,所以价格也是很便宜的。

数据处理费用

目前我没有使用到图片处理,但是可能会用,所以这里列出了该项。数据处理主要是图片处理,OSS 按处理原文件的实际大小计算数据处理量。例如将图片 A 进行裁切,图片处理计量数据是图片 A 的实际大小。

计费方式:单个账号每月免费处理10TB的图片文件,超过的部分按量计费(0.025元/GB),我认为每个月我是不可能处理超过10TB的图片文件的,所以我就算使用到了图片处理,也不会产生额外的费用,所以很放心。

三、绑定域名和CNAME配置

我们在购买完标准存储包后,进入OSS控制台,注意对OSS控制台的操作是算请求次数的!
332.png

关于bucket的创建是非常简单的,参见创建bucket

关于创建bucket选项时,需要修改的就是bucket名称region读写权限(改为公共读)

绑定自定义域名和CNAME配置

如果我们有自己的二级域名(比如我的epiol.top),并且已经在工信部备案,就可以绑定自定义域名了,在二级域名的基础上添加主机记录。比如我的主机记录oss.epiol.top

  1. 绑定自定义域名
    进入到上图界面,并选择绑定用户域名,记得勾选自动添加CNAME记录

333.png
这样就会自动在云解析DNS中配置一条CNAME记录,不用自己再去手动的添加,非常方便!
334.png

  1. 验证CNAME配置是否生效
    调用cmd(win + r)ping oss.epiol.top,如果出现外网访问的bucket域名则正确
    335.png

  2. 申请SSL证书
    如果上传到OSS的bucket中,需要使用HTTPS协议,就需要配置SSL证书,我们可以去阿里云SSL证书管理平台免费申请oss.epiol.top的证书
    336.png
    下载证书后,复制SSL证书的信息到绑定用户域名中的证书托管
    337.png

四、权限管理

OSS需要验证用户的身份来决定是否允许该用户访问和操作OSS中的任何一个bucket。

  1. 进入账号-访问控制中-添加用户
    339.png

  2. 为该用户添加权限
    3310.png

五、halo博客后台设置

3311.png

关于外网访问域名(endpoint),在bucket中查看,如下图:
3312.png

文章如有错别字或者误导的地方,请评论指出,谢谢!