1. 程式人生 > 實用技巧 >Github標星19K+Star,10分鐘自建物件儲存服務!

Github標星19K+Star,10分鐘自建物件儲存服務!

物件儲存服務可以用來儲存各類檔案,mall專案中的圖片儲存採用的是OSS,今天我們來講下如何自己搭建一個物件儲存服務來儲存圖片。

MinIO簡介

MinIO 是一款基於Go語言的高效能物件儲存服務,在Github上已有19K+Star。它採用了Apache License v2.0開源協議,非常適合於儲存大容量非結構化的資料,例如圖片、視訊、日誌檔案、備份資料和容器/虛擬機器映象等。本文將使用 MinIO 來自建一個物件儲存服務用於儲存圖片。

安裝及部署

MinIO的安裝方式有很多,這裡我們使用它在Docker環境下的安裝方式。

  • 下載MinIO的Docker映象:
docker pull minio/minio
  • 在Docker容器中執行MinIO,這裡我們將MiniIO的資料和配置資料夾掛在到宿主機上:
docker run -p 9090:9000 --name minio \
  -v /mydata/minio/data:/data \
  -v /mydata/minio/config:/root/.minio \
  -d minio/minio server /data
  • 執行成功後,訪問該地址來登入並使用MinIO,預設Access Key和Secret都是minioadmin:http://192.168.6.132:9090

上傳檔案及使用

通過使用MinIO的網頁端即可完成檔案的上傳下載功能,下面我們以圖片上傳下載為例來演示下該功能。

  • 在儲存檔案之前,我們需要新建一個儲存桶:

  • 儲存桶建立完成後,通過上傳按鈕可以上傳檔案,這裡我們上傳一張圖片:

  • 圖片上傳完成後,我們可以通過拷貝連結按鈕來獲取圖片訪問路徑,但是這只是個臨時的訪問路徑:

  • 要想獲取一個永久的訪問路徑,需要修改儲存桶的訪問策略,我們可以點選儲存桶右上角的編輯策略按鈕來修改訪問策略;

  • 這裡有三種訪問策略可以選擇,一種只讀、一種只寫、一種可讀可寫,這裡我們選擇只讀即可,但是需要注意的是,訪問字首需要設定為*.*,否則會無法訪問;

  • 設定完成後,我們只需要通過拷貝連結中的前一串路徑即可永久訪問該檔案;

  • 訪問圖片效果展示:

MinIO客戶端的使用

雖然MinIO的網頁端管理已經很方便了,但是官網還是給我們提供了基於命令列的客戶端MinIO Client(簡稱mc),下面我們來講講它的使用方法。

常用命令

下面我們先來熟悉下mc的命令,這些命令和Linux中的命令有很多相似之處。

命令作用
ls 列出檔案和資料夾
mb 建立一個儲存桶或一個資料夾
cat 顯示檔案和物件內容
pipe 將一個STDIN重定向
share 生成用於共享的URL
cp 拷貝檔案和物件
mirror 給儲存桶和資料夾做映象
find 基於引數查詢檔案
diff 對兩個資料夾或者儲存桶比較差異
rm 刪除檔案和物件
events 管理物件通知
watch 監聽檔案和物件的事件
policy 管理訪問策略
session 為cp命令管理儲存的會話
config 管理mc配置檔案
update 檢查軟體更新
version 輸出版本資訊

安裝及配置

由於MinIO服務端中並沒有自帶客戶端,所以我們需要安裝配置完客戶端後才能使用,這裡以Docker環境下的安裝為例。

  • 下載MinIO Client 的Docker映象:
docker pull minio/mc
  • 在Docker容器中執行mc:
docker run -it --entrypoint=/bin/sh minio/mc
  • 執行完成後我們需要進行配置,將我們自己的MinIO服務配置到客戶端上去,配置的格式如下:
mc config host add <ALIAS> <YOUR-S3-ENDPOINT> <YOUR-ACCESS-KEY> <YOUR-SECRET-KEY> <API-SIGNATURE>
  • 對於我們的MinIO服務可以這樣配置:
mc config host add minio http://192.168.6.132:9090 minioadmin minioadmin S3v4

常用操作

  • 檢視儲存桶和檢視儲存桶中存在的檔案:
# 檢視儲存桶
mc ls minio
# 檢視儲存桶中存在的檔案
mc ls minio/blog

  • 建立一個名為test的儲存桶:
mc mb minio/test

  • 共享avatar.png檔案的下載路徑:
mc share download minio/blog/avatar.png

  • 查詢blog儲存桶中的png檔案:
mc find minio/blog --name "*.png"

  • 設定test儲存桶的訪問許可權為只讀
# 目前可以設定這四種許可權:none, download, upload, public
mc policy set download minio/test/
# 檢視儲存桶當前許可權
mc policy list minio/test/

參考資料

詳細瞭解MinIO可以參考官方文件:https://docs.min.io/cn/minio-quickstart-guide.html

轉自https://mp.weixin.qq.com/s/kvLZRqgm1lEITm1j6rzJ0A