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是你的页面文件上传的名称。

最后复制官方文档上面的代码进行修改即可使用:

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

Logo

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

更多推荐