centos7下部署Minio以及springboot3下的简单使用

安装和启动

离线安装 minio的rpm包

rpm -ivh minio-20230809233022.0.0.x86_64.rpm 

启动minio服务

minio server ./

集成systemd

MinIO 集成 systemd 是为了实现 服务化管理(支持 systemctl start/stop/restart)和 开机自启,适用于 CentOS 7+/RHEL 7+ 等支持 systemd 的系统。核心思路是创建 minio.service 服务文件,定义启动参数、运行用户、依赖关系等,以下是 通用且规范的集成步骤(覆盖 RPM 安装和二进制安装两种场景):

1. 创建服务文件

vim /usr/lib/systemd/system/minio.service

2. 写入服务配置(根据安装场景选择)

[Unit]
Description=MinIO
Documentation=https://min.io/docs/minio/linux/index.html
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio

[Service]
WorkingDirectory=/usr/local
ProtectProc=invisible
EnvironmentFile=-/etc/default/minio
ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\"; exit 1; fi"
ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES
Restart=always
LimitNOFILE=65536
TasksMax=infinity
TimeoutStopSec=infinity
SendSIGKILL=no

[Install]
WantedBy=multi-user.target

删除配置文件里面的

# 明确指定启动用户(必须是 minio-user,避免 217/USER 错误)
User=minio-user
Group=minio-user
关键配置说明(避免踩坑)
  • ExecStart:必须指定完整的 MinIO 执行路径(通过 which minio 确认),否则会提示 “命令未找到”。
  • Environment:AK/SK 直接写在服务文件中,若需分离配置(推荐),可改为读取环境变量文件(见下文优化)。
  • LimitNOFILE=65536:MinIO 高并发时需要大量文件描述符,默认系统限制较低,必须配置。
  • Restart=always:确保 MinIO 异常退出后自动重启,提高可用性。

3.优化:分离环境变量配置(推荐生产环境)

若不想将 AK/SK 写死在服务文件中,可通过 EnvironmentFile 读取外部配置文件,步骤如下:

1. 创建 MinIO 环境变量文件
# 创建配置文件(权限 600,仅 root 可读,保护密钥)
vim /etc/default/minio
chmod 600 /etc/default/minio
2. 写入环境变量
MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=minioadmin
MINIO_VOLUMES=/data
MINIO_OPTS="--console-address :9001"
3.创建data目录
mkdir /data
4.启动MinIO

执行以下命令启动MinIO

systemctl start minio

执行以下命令查询运行状态

systemctl status minio

如果执行systemctl start minio报错如下:

可以执行一下

systemctl daemon-reload  #重载 systemd 配置

再执行启动命令就好了

systemctl enable minio #设置minio开机自启
5.防火墙永久开放 9001 端口
# 永久开放 TCP 9001 端口(--permanent 表示永久生效)
firewall-cmd --permanent --add-port=9001/tcp

# 重载防火墙配置(使永久规则生效)
firewall-cmd --reload
6.浏览器访问minio

MinIO管理页面操作

1.登录

管理页面的地址为http://192.168.200.128:9001,登录的用户名和密码为部署时在EnvironmentFile​文件中配置的如下参数

MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=minioadmin

2.创建bucket

上传图片到bucket后,尝试访问一下

发现根本访问不了

如上图所示,可选的访问权限共有三个选项,分别是Private​、Public​和Custom​,具体说明如下

  • ​Private​

    只允许桶的所有者对该桶进行读写。

  • ​Public​

    允许所有人对该桶进行读写。

  • ​Custom​

    自定义访问权限。

若想将权限设置为只允许所有者写,但允许所有人读,就需要自定义访问权限。自定义访问权限,需要使用一个规定格式的JSON字符串进行描述,具体格式可参考官方文档

{
  "Statement" : [ {
    "Action" : "s3:GetObject",
    "Effect" : "Allow",
    "Principal" : "*",
    "Resource" : "arn:aws:s3:::test/*"
  } ],
  "Version" : "2012-10-17"
}

MinIO Java SDK

MinIO提供了多种语言的SDK供开发者使用,本项目需要用到Java SDK,下面通过一个简单案例熟悉一下其基本用法,具体内容可参考官方文档

首先引入依赖

<dependency>
    <groupId>io.minio</groupId>
    <artifactId>minio</artifactId>
    <version>8.5.17</version>
</dependency>

具体实现代码:

package com.yuhuan.book;

import io.minio.*;
import io.minio.errors.*;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;

@SpringBootTest
public class MinioTest {
    String endpoint = "http://192.168.200.128:9000";
    String accessKey = "minioadmin";
    String secretKey = "minioadmin";
    String bucketName = "images";
    @Test
    public void testMinio(){
        MinioClient minioClient = MinioClient.builder().endpoint(endpoint).credentials(accessKey, secretKey).build();
        try {
            boolean b = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());
            if (!b){
                //如果不存在就创建这个桶
                minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
                //设置该桶的访问权限
                String policy = """
                        {
                          "Statement" : [ {
                            "Action" : "s3:GetObject",
                            "Effect" : "Allow",
                            "Principal" : "*",
                            "Resource" : "arn:aws:s3:::%s/*"
                          } ],
                          "Version" : "2012-10-17"
                        }
                        """.formatted(bucketName);
                minioClient.setBucketPolicy(SetBucketPolicyArgs.builder().bucket(bucketName).config(policy).build());
            }
            //上传文件
            minioClient.uploadObject(UploadObjectArgs.builder().bucket(bucketName).filename("D:\\ScreenShot_2025-11-16_223417_598.png").object("ScreenShot_2025-11-16_223417_598.png").build());
            System.out.println("上传成功");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值