【Java项目】Minio的安装部署以及SpringBoot整合Minio

简介: 【Java项目】Minio的安装部署以及SpringBoot整合Minio

前言

minio官方文档

minio中文文档

minio是什么就不多介绍了,直接看上面即可。只需要知道,在项目中需要使用文件存储服务但是又不想使用阿里云,七牛云,华为云等提供的收费的OSS服务,那么就可以考虑使用Minio来存储文件。

本文不讲解任何minio的相关知识,只包含Minio的使用,环境是Centos7。

项目使用的是单机版本的minio,不是分布式版本,因此没有检错纠错数据还原的功能

安装与部署

首先是安装

按照官方文档一样,下载minio并且启动运行

wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
#启动minio server服务,指定数据存储目录/mnt/data
./minio server /mnt/data

安装和启动完毕之后,初始状态如下

同时注意看,这里还为我们提供了API以及Console的地址

我们想要使用MNIO的API来操控MINIO就需要用到这个端口和ip,ip就是这台服务器的ip

而如果我们想要在控制台看到minio,就使用Console后面为我们提供的端口即可。

这里需要注意,minio的控制台的端口是会动态改变的,所以下一次启动后就可能变化了,我们可以通过命令来设定,如下。

首先,minio的默认的配置目录是${HOME}/.minio,可以通过–config-dir命令自定义配置目录

./minio server --config-dir /mnt/config /mnt/data

控制台监听端口是动态生成的,可以通过–console-address “:port”指定静态端口,方式如下

./minio server --console-address ":46021" /mnt/data

设定用户名和密码的方式如下,这里minio要求用户名长度大于3个字符,密码大于8个字符。

如果配置了这两个环境变量,就不会出现红色警告

账号和密码就是人家给你的,端口用人家给你的即可

之后我们可以先创建一个bucket,它具有隔离的特性,并且它是顶级目录

然后我们查看一下对应的挂载目录

上面的版本使用的是手动下载,我们也可以使用docker

docker安装单机版minio

# 在docker里面下载minio
docker pull bitnami/minio
# 之后使用docker run命令来运行minio
docker run -dt                                  \
  -p 9000:9000 -p 46021:46021                     \
  -e "MINIO_ROOT_USER=towelove"     \
  -e "MINIO_ROOT_PASSWORD=towelove"     \
  -v /mnt/data:/data                              \
  -v /mnt/config:/root/.minio         \
  --name "minio_local"                          \
  bitnami/minio:latest server --console-address ":46021"

如果说想要部署分布式的minio,你需要很多个minio的节点,并且确保他们是可以互相通信的。然后在着每一个服务器上部署完毕minio之后,按照如下方式,就可以获取一个minio的分布式集群,部署集群能获得特别好的效果速度以及安全性,但是很麻烦,这里就单机使用就好了,主要是为了下面整合SpringBoot项目使用

minio server http://192.168.146.11/data1  http://192.168.146.12/data2
 http://192.168.146.13/data3  http://192.168.146.14/data4

MC下载

wget  http://dl.min.io/client/mc/release/linux-arm64/mc

SpringBoot整合Minio

SpringBoot的版本是2.7.7,然后导入如下依赖即可

如果在运行过程中出现其他报错,可以百度或者看看报错是否和我其他博客中出现的一样,Minio的坑还是很多的

<dependency>
            <groupId>io.minio</groupId>
            <artifactId>minio</artifactId>
            <version>8.4.3</version>
        </dependency>
        <dependency>
            <groupId>me.tongfei</groupId>
            <artifactId>progressbar</artifactId>
            <version>0.5.3</version>
        </dependency>
        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
            <version>4.8.1</version>
        </dependency>

首先在配置文件中引入你minio的url,并且提供密码以及对应的桶名称

package com.towelove.file.service.impl;
import com.towelove.file.config.MinioConfig;
import com.towelove.file.service.ISysFileService;
import com.towelove.file.utils.FileUploadUtils;
import io.minio.BucketExistsArgs;
import io.minio.MinioClient;
import io.minio.PutObjectArgs;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import java.io.InputStream;
/**
 * Minio 文件存储
 *
 * @author 张锦标
 */
@Service
public class MinioSysFileServiceImpl implements ISysFileService {
    @Autowired
    private MinioConfig minioConfig;
    @Autowired
    private MinioClient minioClient;
    /**
     * 本地文件上传接口
     *
     * @param file 上传的文件
     * @return 访问地址
     * @throws Exception
     */
    @Override
    public String uploadFile(MultipartFile file) throws Exception {
        String fileName = FileUploadUtils.extractFilename(file);
        //判断桶是否存在
        boolean found =
                minioClient.bucketExists(BucketExistsArgs.builder()
                        .bucket(minioConfig.getBucketName()).build());
        if (found) {
            InputStream is = file.getInputStream();
            System.out.println("my-bucketname exists");
            PutObjectArgs args = PutObjectArgs.builder()
                    .bucket(minioConfig.getBucketName())
                    .object(fileName)
                    .stream(is, file.getSize(), -1)
                    .contentType(file.getContentType())
                    .build();
            minioClient.putObject(args);
            is.close();
            return minioConfig.getUrl() + "/" + minioConfig.getBucketName() + "/" + fileName;
        } else {
            System.out.println("my-bucketname does not exist");
            throw new RuntimeException("my-bucketname " + minioConfig.getBucketName()
                    + " does not exist");
        }
    }
}

之后就可以使用apifox进行测试了


相关文章
|
9天前
|
Java
使用IDEA创建项目运行我的第一个JAVA文件输出Helloword
本文介绍了如何使用IDEA(IntelliJ IDEA)创建一个新的Java项目,并运行一个简单的Java程序输出"Hello Word"。文章详细展示了创建项目的步骤,包括选择JDK版本、设置项目名称和路径、创建包和类,以及编写和运行代码。最后,还展示了如何通过IDEA的运行功能来执行程序并查看输出结果。
30 4
使用IDEA创建项目运行我的第一个JAVA文件输出Helloword
|
9天前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的服装商城管理系统
基于Java+Springboot+Vue开发的服装商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的服装商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
31 2
基于Java+Springboot+Vue开发的服装商城管理系统
|
6天前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的大学竞赛报名管理系统
基于Java+Springboot+Vue开发的大学竞赛报名管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的大学竞赛报名管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
20 3
基于Java+Springboot+Vue开发的大学竞赛报名管理系统
|
7天前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的蛋糕商城管理系统
基于Java+Springboot+Vue开发的蛋糕商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的蛋糕商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
20 3
基于Java+Springboot+Vue开发的蛋糕商城管理系统
|
7天前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的美容预约管理系统
基于Java+Springboot+Vue开发的美容预约管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的美容预约管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
21 3
基于Java+Springboot+Vue开发的美容预约管理系统
|
7天前
|
JavaScript Java 关系型数据库
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
本文介绍了一个基于Spring Boot和Vue.js实现的在线考试系统。随着在线教育的发展,在线考试系统的重要性日益凸显。该系统不仅能提高教学效率,减轻教师负担,还为学生提供了灵活便捷的考试方式。技术栈包括Spring Boot、Vue.js、Element-UI等,支持多种角色登录,具备考试管理、题库管理、成绩查询等功能。系统采用前后端分离架构,具备高性能和扩展性,未来可进一步优化并引入AI技术提升智能化水平。
毕设项目&课程设计&毕设项目:基于springboot+vue实现的在线考试系统(含教程&源码&数据库数据)
|
9天前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的房产销售管理系统
基于Java+Springboot+Vue开发的房产销售管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的房产销售管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
23 3
基于Java+Springboot+Vue开发的房产销售管理系统
|
2天前
|
存储 前端开发 Java
Spring Boot 集成 MinIO 与 KKFile 实现文件预览功能
本文详细介绍如何在Spring Boot项目中集成MinIO对象存储系统与KKFileView文件预览工具,实现文件上传及在线预览功能。首先搭建MinIO服务器,并在Spring Boot中配置MinIO SDK进行文件管理;接着通过KKFileView提供文件预览服务,最终实现文档管理系统的高效文件处理能力。
|
5天前
|
JavaScript 前端开发 Java
SpringBoot项目的html页面使用axios进行get post请求
SpringBoot项目的html页面使用axios进行get post请求
18 6
|
6天前
|
消息中间件 Java Kafka
springboot项目启动报错-案例情景介绍
springboot项目启动报错-案例情景介绍
15 2
下一篇
无影云桌面