Windows环境使用Minio如此简单
- Windows环境下使用Minio对象存储真的好简单
- 1、下载及安装
- 1.1、运行
- 1.2、配置
- 1.2.1、创建桶
- 1.3、Minio支持多种语言的SDK
- 1.3.1、Java中使用
Windows环境下使用Minio对象存储真的好简单
很久很久以前,开发个Web程序,上传文件一直是在单个服务器上。后来,微服务流行后,再用单个服务器存储文件(配置虚拟目录方式)或者配置个FTP服务端再在程序中进行ftp的上传,总感觉没那么优雅~~-_-! 有一天Minio出现了,完美解决分布式存储文件存储的问题,而且足够轻量。
1、下载及安装
官网地址:https://min.io/download#/windows
分别下载服务端、客户端:
1.1、运行
1、在D盘建立文件夹Minio(d:/Minio),创建子文件夹进行存储(d:/Minio/MinioData)
2、把下载的服务端:minio.exe、客户端:mc.exe,拷贝到d:/Minio下
3、按住Shift再点击 鼠标右键,打开PowerShell 或Terminal
- PowerShell运行:.\minio.exe server d:\Minio\MinioData
4、Terminal运行:minio.exe server d:\Minio\MinioData
1.2、配置
点击:http://127.0.0.1:9000,或者直接浏览器输入打开网页,进入登录界面
- 默认账号:minioadmin
- 默认密码:minioadmin
1.2.1、创建桶
点击“Create Bucket +”按钮,设置桶名并创建
如需要特定某个用户访问,可以点击 “Identity” -> “Create User +”,创建用户
使用API接入Minio需要创建AccessKey,点击“Access Keys” -> “Create access key +”,进行创建,默认随机一对,也可自行设置
如果嫌每次手动运行minio.exe麻烦,也可以花几分钟做成Windows服务,开机自动运行
- 下载WinSW,下载地址:https://github.com/winsw/winsw/releases
- 拷贝到D:\Minio\,重命名成你想要的服务,如:minio-server.exe
- 同目录下创建配置文件,minio-server.xml(注意需要同名)
- 配置minio-server.xml文件
<service><id>minio-server</id><name>minio-server</name><!-- 如果不能启动,可将description中的中文去除 --><description>Minio文件存储服务</description><startmode>Automatic</startmode><!-- 也可以设置环境变量 --><env name="HOME" value="%BASE%"/><executable>%BASE%\minio.exe</executable><arguments>server "%BASE%\MinioData"</arguments><!-- 配置日志 --><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>
就可以安装成服务了
-
安装服务:minio-server.exe install
-
启动服务:minio-server.exe start
-
停止服务:minio-server.exe stop
-
卸载服务:minio-server.exe uninstall
-
如果想改登录账号及密码,可以新建一个bat文件,内容为:
set MINIO_ACCESS_KEY=admin
set MINIO_SECRET_KEY=12345678
minio.exe server
如果需要特定的端口,也可以这样:
set MINIO_ACCESS_KEY=admin
set MINIO_SECRET_KEY=12345678
minio.exe server --address:9991 d:\Minio\MinioData
再配合WinSW就可以实现了
<service><id>minio-server</id><name>minio-server</name><!-- 如果不能启动,可将description中的中文去除 --><description>Minio文件存储服务</description><startmode>Automatic</startmode><executable>run.bat</executable>
</service>
这就已经成功安装服务了
卸载服务
当然你也可以用WinSW把java -jar变成一个Windows服务
1.3、Minio支持多种语言的SDK
链接:https://min.io/docs/minio/linux/developers/minio-drivers.html?ref=docs
- Go
- Python
- Java
- .NET
- Javascript
- Haskell
- C++
1.3.1、Java中使用
Maven引用
<dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.5.7</version>
</dependency>
Java中使用
import io.minio.BucketExistsArgs;
import io.minio.MakeBucketArgs;
import io.minio.MinioClient;
import io.minio.UploadObjectArgs;
import io.minio.errors.MinioException;
import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;public class FileUploader {public static void main(String[] args)throws IOException, NoSuchAlgorithmException, InvalidKeyException {try {// Create a minioClient with the MinIO server playground, its access key and secret key.MinioClient minioClient =MinioClient.builder().endpoint("https://play.min.io").credentials("Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG").build();// Make 'asiatrip' bucket if not exist.boolean found =minioClient.bucketExists(BucketExistsArgs.builder().bucket("asiatrip").build());if (!found) {// Make a new bucket called 'asiatrip'.minioClient.makeBucket(MakeBucketArgs.builder().bucket("asiatrip").build());} else {System.out.println("Bucket 'asiatrip' already exists.");}// Upload '/home/user/Photos/asiaphotos.zip' as object name 'asiaphotos-2015.zip' to bucket// 'asiatrip'.minioClient.uploadObject(UploadObjectArgs.builder().bucket("asiatrip").object("asiaphotos-2015.zip").filename("/home/user/Photos/asiaphotos.zip").build());System.out.println("'/home/user/Photos/asiaphotos.zip' is successfully uploaded as "+ "object 'asiaphotos-2015.zip' to bucket 'asiatrip'.");} catch (MinioException e) {System.out.println("Error occurred: " + e);System.out.println("HTTP trace: " + e.httpTrace());}}
}
其他自行摸索了,祝用餐愉快!