什么是minio?
MinIO 是一個基於Apache License v2.0開源協議的對象存儲服務。它兼容亞馬遜S3雲存儲服務接口,非常適合於存儲大容量非結構化的數據,例如圖片、視頻、日志文件、備份數據和容器/虛擬機鏡像等,而一個對象文件可以是任意大小,從幾kb到最大5T不等。
MinIO是一個非常輕量的服務,可以很簡單的和其他應用的結合,類似 NodeJS, Redis 或者 MySQL。
1、官網地址 http://www.minio.org.cn/
2、github地址 https://github.com/minio/minio
window部署
3、windows 服務端下載地址
http://dl.minio.org.cn/server/minio/release/windows-amd64/minio.exe
4、安裝啟動
啟動一個cmd窗口,進入minio.exe所在文件夾,輸入如下命令
新建一個目錄存放minio文件,我建的文件名叫 D:\Dminio\DminioData,CMD進入剛剛下載的minio.exe所在目錄,
直接在cmd下運行:minio.exe server D:\Dminio\DminioData
啟動成功以后如下圖(啟動就是這么簡單),最后紅色字提示修改access Key和Secret Key (默認全是minioadmin)
注冊成服務在后台運行
- 地址:https://github.com/winsw/winsw/releases
- 將WinSW.exe復制到自定義的目錄,並重命名為自己想命名的服務名稱minio-server.exe
- 同目錄下創建minio-server.xml。特別注意,xml和exe必須同名
- 配置minio-server.xml文件
- 使用minio-server.exe install安裝服務
- 安裝完后,去服務中啟動服務。啟動成功就可以正常使用minio啦
- 使用minio-server.exe uninstall卸載服務
<service> <id>minio-server</id> <name>minio-server</name> <description>minio文件存儲服務器</description> <!-- 可設置環境變量 --> <env name="HOME" value="%BASE%"/> <executable>%BASE%\minio.exe</executable> <arguments>server "%BASE%\data"</arguments> <!-- <logmode>rotate</logmode> --> <logpath>%BASE%\logs</logpath> <log mode="roll-by-size-time"> <sizeThreshold>10240</sizeThreshold> <pattern>yyyyMMdd</pattern> <autoRollAtTime>00:00:00</autoRollAtTime> <zipOlderThanNumDays>5</zipOlderThanNumDays> <zipDateFormat>yyyyMMdd</zipDateFormat> </log> </service>
5、瀏覽器打開 http://127.0.0.1:9000/ 輸入access Key和Secret Key (全是minioadmin)
6、修改AccessKey和SecretKey(D:\Dminio\DminioData\.minio.sys\config\config.json)
用戶名即為上面的AccessKey
密碼即為上面的SecretKey
7、上傳文件,先要新建一個bucket (中文是桶的意思,我們理解為文件夾),點右下角有一個+號,選Create bucket ,
再上傳一個文件,如下圖,表示成功了。
docker部署
搜索鏡像的命令
docker search minio
拉取鏡像的命令
docker pull minio/minio
a、啟動與安裝鏡像(這種安裝方式並沒有指定 ACCESS_KEY 和 SECRET_KEY 進行設置,安裝后可以進行 echo命令設置,)
docker run -it -p 9000:9000 -d minio/minio server /data
-it 表示運行參數,-p 表示暴露端口 ,-d 表示后台運行,data 指定目錄存放文件
echo 命令設置 ACCESS_KEY 和 SECRET_KEY
echo "admin" | docker secret create access_key - echo "admin123456" | docker secret create secret_key -
b、自定義用戶和秘鑰安裝
docker run -p 9000:9000 --name minio \ -d --restart=always \ -e "MINIO_ACCESS_KEY=admin" \ -e "MINIO_SECRET_KEY=admin123456" \ -v /home/data:/data \ -v /home/config:/root/.minio \ minio/minio server /data
linux部署
先建立個存放minion的文件夾。並進入,或者直接在home目錄下,用wget下載
wget https://dl.minio.io/server/minio/release/linux-amd64/minio
若是以上的下載鏈接速度較慢,可使用國內的下載鏈接
wget http://dl.minio.org.cn/server/minio/release/linux-amd64/minio
如果:-bash: wget: 未找到命令,先安裝wget
yum -y install wget
接着為下載的minion添加執行權限(進入安裝目錄進行賦權操作)
chmod +x minio
復制minio到指定目錄,方便管理
mv minio /usr/local/
創建Minio的文件存在目錄
mkdir -p /home/minio/data
設置minio的賬號和密碼,也就是 access key and secret key(不指定,系統就是使用默認密碼,賬號和密碼都是 minioadmin)
export MINIO_ACCESS_KEY=dezcloud export MINIO_SECRET_KEY=NBdd123456
啟動minion:(進入 /usr/local/
目錄)
./minio server /home/minio/data/
如果這樣啟動的話,命令窗口不能關閉,可以設置后台啟動方式
./minio server /home/minio/data &
如果報錯Unable to initialize the server: Unable to initialize sub-systems: Credentials missing
應該是修改了MINIO_ACCESS_KEY與 MINIO_SECRET_KEY,先設置下改過的MINIO_ACCESS_KEY 與 MINIO_SECRET_KEY ,然后再啟動就正常。
export MINIO_ACCESS_KEY=dezcloud export MINIO_SECRET_KEY=NBdd123456 ./minio server /home/minio/data &
查看是否啟動正常
ps -e|grep minio [root@localhost local]# ps -e|grep minio
439 pts/3 00:00:03 minio
[root@localhost local]#
設置minio開機自啟
1.打開開機自啟文件
vi /etc/rc.local
2.添加自啟腳本(如果自定義賬號密碼添加export MINIO_ACCESS_KEY=dezcloudexport MINIO_SECRET_KEY=NBdd123456)
export MINIO_ACCESS_KEY=dezcloud
export MINIO_SECRET_KEY=NBdd123456
nohup /usr/local/minio server /home/minio/data > /home/minio/data/minio.log 2>&1 &
3.保存
4.修改權限
chmod +x /etc/rc.local
5.重啟測試
reboot
登錄地址為啟動后顯示 ,默認為 ip:9000
8、用java測試上傳功能:
import io.minio.MinioClient; import io.minio.ObjectStat; import io.minio.errors.MinioException; import org.xmlpull.v1.XmlPullParserException; import java.io.IOException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; public class Program { public static void main(String[] args){ System.out.println("hello java"); try { test1(); }catch (Exception e){ System.out.println("test1錯誤: " + e); } } public static void test1()throws NoSuchAlgorithmException, IOException, InvalidKeyException, XmlPullParserException { try { // 參數為:圖床,賬號,密碼 MinioClient minioClient = new MinioClient("http://127.0.0.1:9000", "minioadmin", "minioadmin"); //boolean v=minioClient.bucketExists("test1"); // 檢查文件夾是否已經存在 boolean isExist = minioClient.bucketExists("test1"); if(isExist) { System.out.println("test1文件夾已經存在了"); } else { // 創建一個名為managertest的文件夾 System.out.println("test1文件夾還沒存在"); minioClient.makeBucket("test1"); } // 使用putObject上傳一個文件到文件夾中。 //參數為:文件夾,要存成的名字,要存的文件 (如果文件名相同將會復蓋原來的文件) minioClient.putObject("test1","tujpg2.png", "E:/Convert/testAllFile/tujpg2.jpg"); System.out.println("上傳成功了"); //使用getObject獲取一個文件 // 調用statObject()來判斷對象是否存在。 ObjectStat file=minioClient.statObject("test1", "tujpg2.png"); System.out.println("文件名:"+file.name()+",文件大小:"+file.length()); // 獲取1.png的流並保存到photo.png文件中。 //參數為:文件夾,要獲得的文件,要寫入的文件 minioClient.getObject("test1", "tujpg2.png", "E:/Convert/testAllFile/tujpg_minio.png"); System.out.println("下載成功了"); } catch(MinioException e) { System.out.println("錯誤: " + e); } } }
9、運行以后,test是開始手動點右下角創建的,test1是代碼創建的,里面的文件也是代碼上傳的。: