什么是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是代碼創建的,里面的文件也是代碼上傳的。:
