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 上傳的方法。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。