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

NO IMAGE

SpringBoot實戰電商項目mall(25k+star)地址:github.com/macrozheng/…

摘要

對象存儲服務可以用來存儲各類文件,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都是minioadminhttp://192.168.6.132:9090
Github標星19K+Star,10分鐘自建對象存儲服務!

上傳文件及使用

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

  • 在存儲文件之前,我們需要新建一個存儲桶:
Github標星19K+Star,10分鐘自建對象存儲服務!

  • 存儲桶創建完成後,通過上傳按鈕可以上傳文件,這裡我們上傳一張圖片:
Github標星19K+Star,10分鐘自建對象存儲服務!

  • 圖片上傳完成後,我們可以通過拷貝鏈接按鈕來獲取圖片訪問路徑,但是這只是個臨時的訪問路徑:
Github標星19K+Star,10分鐘自建對象存儲服務!

  • 要想獲取一個永久的訪問路徑,需要修改存儲桶的訪問策略,我們可以點擊存儲桶右上角的編輯策略按鈕來修改訪問策略;
Github標星19K+Star,10分鐘自建對象存儲服務!

  • 這裡有三種訪問策略可以選擇,一種只讀、一種只寫、一種可讀可寫,這裡我們選擇只讀即可,但是需要注意的是,訪問前綴需要設置為*.*,否則會無法訪問;
Github標星19K+Star,10分鐘自建對象存儲服務!

  • 設置完成後,我們只需要通過拷貝鏈接中的前一串路徑即可永久訪問該文件;
Github標星19K+Star,10分鐘自建對象存儲服務!

  • 訪問圖片效果展示:
Github標星19K+Star,10分鐘自建對象存儲服務!

MinIO客戶端的使用

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

常用命令

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

命令作用
ls列出文件和文件夾
mb創建一個存儲桶或一個文件夾
cat顯示文件和對象內容
pipe將一個STDIN重定向到一個對象或者文件或者STDOUT
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

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

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

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

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

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

  • 查找blog存儲桶中的png文件:
mc find minio/blog --name "*.png"

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

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

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

參考資料

詳細瞭解MinIO可以參考官方文檔:docs.min.io/cn/minio-qu…

公眾號

mall項目全套學習教程連載中,關注公眾號第一時間獲取。

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

相關文章

一位18屆前端玩家的年終總結|年度徵文

記錄Computed源碼分析

手把手帶你入門AST抽象語法樹

淺析Node進程與線程