szgislle

szgislle

生命不息,折腾不止!

使用Oracle对象存储作为博客图床(一)

先看效果:

oracle_photo_blog.gif

作为一个专业白嫖党,只使用 Oracle 的 4 个免费鸡怎么能满足呢,拥有 20GB 免费空间的对象存储当然也要利用起来,正好最近又重拾起了鸽了多年的博客,正好作为博客的图床。

前置条件#

  1. 一个 Oracle Cloud 账号(需要信用卡认证,大陆已经很难申请了)
  2. 良好的科学环境

Oracle Object Storage 存储桶准备#

  1. 进入 Oracle Cloud 对象存储管理界面,创建新的存储桶
    image.png
    默认配置即可,创建完之后编辑可见性,这里可以选择公开或者私有,
    公开:所有文件允许读取
    私有:可使用预先验证的请求实现部分文件公开(推荐这种方式)
    image.png
  2. 创建预先验证的请求
    image.png
    选择具有前缀的对象,前缀填写images, 下文配置 picgo 时需要匹配这个前缀,否则会有权限问题,访问类型默认只读即可,到期时间尽量一步到位多配几年。
    image.png
    将 URL 复制保存,这即时存储桶相应前缀目录访问的 BaseURL
    image.png
    上传一个图片试一下能否访问
    image.png

可以看到由于存储桶的权限设置,使用 URL 路径访问是行不通的
image.png
需要替换为刚才创建的预见请求的 URL 前缀
https://objectstorage.ap-chuncheon-1.oraclecloud.com/p/xxx/n/{namespace}/b/blog/o/images/2022-05-23.png
3. 存储桶 Endpoint
甲骨文的对象存储 endpoint 模式为https://{namespace}.compat.objectstorage.{region}.oraclecloud.com/

  • namespace: 存储桶信息名称空间字段
    image.png

  • region: 这个是你甲骨文账号的区域,通常在你的 Oci 的 console 地址里就有体现,如我的春川为ap-chuncheon-1
    image.png

  1. 申请 Oracle 账户 Ak 和 Sk
    右上角头像,进入 “我的概要信息 “,” 客户密钥 “选项” 生成密钥 “
    image.png
    同样保存已生成密钥,该密钥为账户的SecretAccessKey
    image.png
    AccessKeyID在列表页,同样复制保存
    image.png

安装配置 Picgo 和 s3 插件#

准备工作完成,下面开始配置图床工具。这里有两种选择:

  1. 具有 GUI 界面:PicGo
  2. Cli 命令行操作:PicGo-Core
    上面两种看个人喜好,我比较习惯命令行,所以选择第二种,配置方面都是一样的,区别为是否提供了 GUI,

安装 Node 环境#

自行按nodejs官网安装

安装 Picgo-Core#

npm install picgo -g

或者使用 Yarn

yarn global add picgo

验证安装

picgo -h

出现以下结果表明安装成功
image.png

添加 S3 插件#

s3 插件理论上支持所有兼容 S3API 的对象存储,具体参看插件主页

picgo add s3

安装成功之后配置文件含有以下信息
image.png

配置 s3 插件#

{
  "picBed": {
    "uploader": "aws-s3",
    "current": "aws-s3",
    "aws-s3": {
      "accessKeyID": "{ak}",
      "secretAccessKey": "{sk}",
      "bucketName": "{bucket}",
      "region": "{region}",
      "uploadPath": "images/{year}/{month}/{md5}.{extName}",
      "endpoint": "https://{namespace}.compat.objectstorage.{region}.oraclecloud.com/",
      "acl": "public-read",
      "pathStyleAccess": true,
      "urlPrefix": "https://objectstorage.ap-chuncheon-1.oraclecloud.com/p/{publicKey}/n/{namespace}/b/blog/o",
      "disableBucketPrefixToURL": true
    }
  },
  "picgoPlugins": {
    "picgo-plugin-s3": true
  }
}

上面配置除了uploadPath字段,其他地方的占位符号 "{}" 应替换为相应值:

  • ak: 上文申请的甲骨文账号AccessKeyID
  • sk: 上文申请的甲骨文账号SecretAccessKey
  • bucket: 桶名称,我的这里就是blog
  • region: 上文获取的region区域,我这里是ap-chuncheon-1
  • uploadPath 的占位符不需要修改,且注意前缀 images 一定要匹配上文预先验证的请求处的前缀
  • namespace: 上文获取的 namespace
  • urlPrefix: 这个字段为预先验证的请求处申请的 URL 前缀
  • disableBucketPrefixToURL: 这个字段必须为 true, 否则上传链接自动添加桶前缀导致访问失败,具体可看这个Issue

验证配置#

截图工具随意截图到剪贴板

picgo upload

上传剪贴板图片

image.png

访问图片链接成功
image.png
到此就实现图床最基本的功能了,搭配任意编辑器都可使用图床了,只是稍显麻烦,如果在编辑器中复制上传,成功后即刻显示图片体验会更好。下面我们使用 Obsidian 搭配对应插件实现上面功能。

安装配置 Obsidian#

下载安装Obsidian

关闭安全模式搜索”Image auto upload Plugin“插件安装
image.png

插件配置
image.png
默认上传器选择PicGo-Core

结语#

至此使用 Oracle 作为对象存储教程已经完成,但是还是有些缺陷,如图片访问效果不理想,因为甲骨文的对象存储不支持 cdn,导致不同区域访问效果不同。下一章我们使用 CloudFlare 加速我们的图片访问,以及特殊情况下制作 GIF 上传的方法。

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。