第一章:minio介紹與安裝

章節快捷訪問:

第一章:minio介紹與安裝

https://blog.csdn.net/hzw2312/article/details/106077729

第二章:minio單機版,使用客戶端備份文件

https://blog.csdn.net/hzw2312/article/details/106078150

第三章:minio的javaAPI

https://blog.csdn.net/hzw2312/article/details/106078390

第四章:minio的presigned URLs上傳文件

https://blog.csdn.net/hzw2312/article/details/106078604

--------------------------------------------------

 

最近公司需要做一個文件服務器。找了很久,最後還是決定用minio來做。先說說其他的方案爲什麼不用。

nginx

我們一般都使用nginx來做web轉發,負債均衡等工作。其他他也可以作爲一個文件服務,只需要添加上傳模塊跟上傳進度模塊即可。但是使用他過後,後期的文件的備份需要在找別的工具來實現,他並不支持。

MongoDB File Server

MongoDB File Server 致力於小型文件的存儲,比如博客中圖片、普通文檔等。由於MongoDB 支持多種數據格式的存儲,對於二進制的存儲自然也是不話下,所以可以很方便的用於存儲文件。由於 MongoDB 的 BSON 文檔對於數據量大小的限制(每個文檔不超過16M),所以本文件服務器主要針對的是小型文件的存儲。顯然不符合大部分文件服務的要求,我們肯定有很多文檔的大小是超過16M的。但是對於大型文件的存儲(比如超過16M),MongoDB 官方已經提供了成熟的產品 GridFS。GridFS這個東西是按照塊來存儲的,默認是大小爲255 kB,什麼意思呢。就是他會把你的源文件分成無數個文件塊來存儲,在你訪問的時候在組裝起來返回給你。他不支持更新文檔的修改,需要刪除了在上傳。在官網的文檔中明確說了:如果您需要自動更新整個文件的內容,請不要使用GridFS(Do not use GridFS if you need to update the content of the entire file atomically)。看到這裏估計就有一大票人放棄了。

ceph、fastFDS、vsftpd等一大票Linux的文件服務我們用不了,因爲要支持widnows部署。我們不可能在windows上搞一個docker來跑吧!最後,我們選擇了minio。

minio

MinIO 是一個基於Apache License v2.0開源協議的對象存儲服務。它兼容亞馬遜S3雲存儲服務接口,非常適合於存儲大容量非結構化的數據,例如圖片、視頻、日誌文件、備份數據和容器/虛擬機鏡像等,而一個對象文件可以是任意大小,從幾kb到最大5T不等。MinIO是一個非常輕量的服務,可以很簡單的和其他應用的結合,類似 NodeJS, Redis 或者 MySQL。

部署模式

minio支持單機部署、多租戶部署、分佈式部署。支持原始文件存儲已經糾刪碼模式存儲。在進行單機部署的時候,還可以使用minio的客戶端工具進行備份。接下來我們詳細說明他的單機部署+客戶端備份。

SDK(API)

minio提供了很多語言的SDK跟API支持:javascript,Java,python,Golan,.Net。能夠方便程序員們快速的跟應用程序進行接入。詳情參見官網文檔https://docs.minio.io/

安裝

說了一堆,我們開始安裝吧。我們在linux上進行安裝。

創建目錄:sudo mkdir minio

下載安裝包:sudo wget https://dl.min.io/server/minio/release/linux-amd64/minio

如果你在使用命令下載的時候,下載不下來。可以多試幾次,或者直接用別的機器訪問上面的url直接進行下載。然後上傳到服務器上去。

賦予執行權限:chmod +x minio

啓動minio:./minio server --config-dir /etc/minio /data/minioData

執行啓動後打印

ktwlrj@ktwlrj80:/usr/local/minio$ sudo ./minio server --config-dir /etc/minio /data/minioData
Endpoint:  http://192.168.51.80:9000  http://127.0.0.1:9000    
AccessKey: minioadmin 
SecretKey: minioadmin 

Browser Access:
   http://192.168.51.80:9000  http://127.0.0.1:9000    

Command-line Access: https://docs.min.io/docs/minio-client-quickstart-guide
   $ mc config host add myminio http://192.168.51.80:9000 minioadmin minioadmin

Object API (Amazon S3 compatible):
   Go:         https://docs.min.io/docs/golang-client-quickstart-guide
   Java:       https://docs.min.io/docs/java-client-quickstart-guide
   Python:     https://docs.min.io/docs/python-client-quickstart-guide
   JavaScript: https://docs.min.io/docs/javascript-client-quickstart-guide
   .NET:       https://docs.min.io/docs/dotnet-client-quickstart-guide
Detected default credentials 'minioadmin:minioadmin', please change the credentials immediately using 'MINIO_ACCESS_KEY' and 'MINIO_SECRET_KEY'

這樣我們的minio服務端就啓動成功了,最後一行提示我們要儘快修改minio的密碼。我們先不管,先試試能不能訪問

測試

在瀏覽器輸入:http://192.168.51.80:9000

在輸入控制打印的默認的AccessKey和SecretKey:

AccessKey: minioadmin

SecretKey: minioadmin

點擊登錄

進入系統後,我們先要點擊右下角的“+”按鈕,創建一個文件桶(輸入名稱後,回車即可),在上傳文件到這個文件桶中。Create bucket(創建文件桶)、Upload file(上傳文件)。

 

上傳成功

現在我們去服務器,我們啓動時指定的目錄去看看,文件桶相當於文件目錄,這裏沒有使用糾刪碼的模式,所以直接就是源文件了。當我們線上運行的項目已經有源文件了,在使用minio的時候,可以直接指定該目錄爲minio的文件目錄就行了。

由於我們重新制定了證書目錄(/etc/minio),現在我們去看看證書目錄有啥

裏面是啥也沒有,如果我們需要https,證書就需要放在這裏面。默認的證書目錄是${HOME}/.minio/certs。

分享鏈接

現在已經可以正常的上傳文件了,在文件列表界面有一個分享按鈕,我們可以點擊分享,將生成文件的訪問地址。

這裏可以指定鏈接的有效時間,最多7天,最小的單位是分鐘。在有效時間過期後在訪問圖片時,會提示失效。

設置啓動腳本

我們的minio之前是通過命令行直接啓動的,並沒有指定後臺運行,而且端口跟AccessKey和SecretKey都還是使用默認的,這裏需要在啓動的時候指定一下。

export MINIO_ACCESS_KEY=username
export MINIO_SECRET_KEY=password
nohup sudo /usr/local/minio/minio server --address=0.0.0.0:9000 --config-dir /etc/minio /data/minioData > /usr/local/minio/minio.log 2>&1&

可以將上面的命令放在一個自己新建的.sh可執行文件中,記得給當前用戶加上執行權限

chmod u+x *.sh

這樣我們的minio服務端基本的配置算是ok了。

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章