Github標星19K+Star,10分鐘自建物件儲存服務!
阿新 • • 發佈:2021-01-08
物件儲存服務可以用來儲存各類檔案,
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