minio的认识以及安装和使用
minio介绍
MinIO是一个开源的分布式对象存储服务器,支持S3协议并且可以在多节点上实现数据的高可用和容错。它采用Go语言开发,拥有轻量级、高性能、易部署等特点,并且可以自由选择底层存储介质。它基于Apache License 开源协议,兼容Amazon S3云存储接口。适合存储非结构化数据,如图片,音频,视频,日志等。
它主要有 高性能、安装部署简单、操作简单、性能优秀,读写速度快、支持云原生容器化部署、提供多语言SDK的支持等优点。
minio安装
官网地址:MinIO对象存储 Container — MinIO中文文档 | MinIO Container中文文档
Windows安装
1、下载Minio安装文件
地址:https://dl.min.io/server/minio/release/
2、进入到Monio所在目录,启动Minio
启动命令: minio.exe server 数据文件目录

选择你需要下载的版本

如果是win就选择下载minio.exe 这个启动程序。
创建一个文件夹

在里面创建一个新的文件夹比如data并将刚刚下载的minio.exe复制在这个文件夹下

点击上面的地址栏输入 'cmd'进入

输入以上的地址,标红线的地方是你的文件夹下面新创建的文件夹名字,回车启动。
如果你已近创建过minio或者是在虚拟机上面创建过minio则会出现这个

正常是这个效果的:

注意这个有两个地址,一个9000和50925上一个是用于传输的另一个是用来进行获取。
打开游览器输入下面的那个地址如:localhost:50925进入minio登录页面,虚拟机不同后面说。

用户名和密码默认为minioadmin。

进来没有存储桶会提示让你创建一个。

输入你要创建的存储桶的名称,点击create Bucket进行创建。

这里有你的存储桶的详细信息,点击你的存储桶进去可以进行设置,方便后续的使用代码进行上传。


这里有三种格式,分别是私有,公共,和自定义。如果是私有的则不可以在外面进行访问,需要至少适自定义或者公共的才可以进行外部访问。
如果是自定义可以使用这段来进行设置:
{
"Statement" : [ {
"Action" : "s3:GetObject",
"Effect" : "Allow",
"Principal" : "*",
"Resource" : "arn:aws:s3:::test/*"
} ],
"Version" : "2012-10-17"
}
允许(Allow)所有人(*)读取(s3:GetObject)指定桶(test)的所有内容
你可以直接点击你的存储桶右上角的Upload进行上传,如果你是自定义或者public类型的可以直接进行查看,查看路径可以是: ip地址:9000/存储桶名称/文件名
虚拟机安装
如果你使用虚拟机进行安装这个minio比较简答,使用一下的命令进行安装
获取minio的安装包
wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio-20241029160148.0.0-1.x86_64.rpm -O minio.rpm
安装
rpm -ivh minio.rpm
配置
vim /usr/lib/systemd/system/minio.service

主要是修改这几个部分,将其进行注释。
编写EnvironmentFile中指定路径下的配置文件
vim /etc/default/minio
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=minioadmin
MINIO_VOLUMES=/data
MINIO_OPTS="--console-address :9001"
这个4个分别是用户名,密码和文件名以及请求端口号
设置防火墙,这个和win系统中的不一样,使用的是linux是需要自己设置的
#开放minio的9000和9001端口
firewall-cmd --zone=public --add-port=9000/tcp --add-port=9001/tcp --permanent
#重新加载防火墙规则
firewall-cmd --reload
#查看开放的端口
firewall-cmd --list-ports
重新启动你的服务systemctl daemon-reload
启动minio
#设置minio服务自启动
systemctl enable minio
#启动minio服务
systemctl start minio
#查看minio服务状态
systemctl status minio
之后在页面上输入你的虚拟机ip地址加上9000,我的是192.168.144.15:9000,同样可以看的登录地址,不过如果你先创建了win的minio则需要换一个用户名不能是你之前创建的minio用户。
代码使用minio
使用minio之前需要先引入依赖
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.5.2</version>
</dependency>
使用minio对于jdk的要求是需要在jdk1.8级以上的版本,我这使用的是jdk17
这里展示一个流的方法进行传递。
public class FileUploadTest {
public static void main(String[] args) throws Exception {
// 创建一个Minio的客户端对象
MinioClient minioClient = MinioClient.builder()
.endpoint("http://127.0.0.1:9000")
.credentials("minioadmin", "minioadmin")
.build();
boolean found = minioClient.bucketExists(BucketExistsArgs.builder().bucket("spzx-bucket").build());
// 如果不存在,那么此时就创建一个新的桶
if (!found) {
minioClient.makeBucket(MakeBucketArgs.builder().bucket("spzx-bucket").build());
} else { // 如果存在打印信息
System.out.println("Bucket 'spzx-bucket' already exists.");
}
FileInputStream fis = new FileInputStream("D://01.jpg") ;
PutObjectArgs putObjectArgs = PutObjectArgs.builder()
.bucket("spzx-bucket")
.stream(fis, fis.available(), -1)
.object("01.jpg")
.build();
minioClient.putObject(putObjectArgs) ;
// 构建fileUrl
String fileUrl = "http://127.0.0.1:9000/spzx-bucket/01.jpg" ;
System.out.println(fileUrl);
}
}
如果是虚拟机则需要将endpoint改为你的你的本地虚拟机的ip地址如:"http://192.168.144.15:9000"
以及下面的filUrl也要进行修改。
以上示例可以在官方文档中进行查看

也可以查看其它的方法,比如流



在你的项目中创建出service层和controller层,service需要有实现层也就是impl,创建好了后导入你的service层,进行调用方法和返回值任你取,但是请求类型需要是Post类型的,因为需要进行文件上传,所以不可以是get类型因为接受不到数据,使用 MultipartFile file获取数据,这个file是你的页面文件上传的名称。
最后复制官方文档上面的代码进行修改即可使用:

这也是上面使用提到的那个方法。

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)