MinIO使用

MinIO使用


1、什么是MinIO

Minio 是个基于 Golang 编写的开源对象存储套件,基于Apache License v2.0开源协议,虽然轻量,却拥有着不错的性能。它兼容亚马逊S3云存储服务接口。可以很简单的和其他应用结合使用,例如 NodeJS、Redis、MySQL等。

对象存储是用于存储非结构化数据的数据存储架构,它将一个数据单元称为一个对象,每个对象都包含数据本身、元数据(描述数据的信息)和一个唯一标识符(通常是一个URL地址)。

在2001年,亚马逊推出了Simple Storage Service(简称S3),这是第一个商业化的、面向互联网的对象存储服务。随后国内众多云服务厂商也都推出了自己的对象存储服务,例如阿里云的OSS,华为云的OBS,百度云的BOS等等。

MinIO是一个开源的对象存储方案,兼容亚马逊S3协议。

对于对象存储,我们可以选择直接购买各大云厂商提供的服务,也可以选择使用开源的服务,自行安装和维护。本项目采用开源的对象存储Minio来存储图片信息。

2、MinIO核心概念
  • 对象(Object)

    对象是实际的数据单元,例如我们上传的一个图片。

  • 存储桶(Bucket)

    存储桶是用于组织对象的命名空间,类似于文件夹。每个存储桶可以包含多个对象。

  • 端点(Endpoint)

    端点是MinIO服务器的网络地址,用于访问存储桶和对象,例如http://192.168.10.101:9000

    注意:9000为MinIO的API的默认端口

  • Access Key 和 Secret Key

    Access Key是用于标识和验证访问者身份的唯一标识符,相当于用户名。

    Secret Key是与Access Key关联的密码,用于验证访问者的身份。

3、Linux部署MinIO

获取MinIO安装包

下载地址如下:https://dl.min.io/server/minio/release/linux-amd64/archive/minio-20230809233022.0.0.x86_64.rpm,通过以下命令可直接将安装包下载至服务器

wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio-20230809233022.0.0.x86_64.rpm

image-20240604093100079

注:由于服务器在国外,所以下载会比较慢,可以直接使用在网上找对应资源

安装MinIO

rpm -ivh minio-20230809233022.0.0.x86_64.rpm

image-20240604093525422

集成Systemd

  • Systemd概述

    Systemd是一个广泛应用于Linux系统的系统初始化和服务管理器,其可以管理系统中的各种服务和进程,包括启动、停止和重启服务,除此之外,其还可以监测各服务的运行状态,并在服务异常退出时,自动拉起服务,以保证服务的稳定性。系统自带的防火墙服务firewalld,我们自己安装的mysqldredis均是由Systemd进行管理的,此处将MinIO服务也交给Systemd管理。

  • 编写MinIO服务配置文件

    Systemd所管理的服务需要由一个配置文件进行描述,这些配置文件均位于/etc/systemd/system/或者/usr/lib/systemd/system/目录下,下面创建MinIO服务的配置文件。

    执行以下命令创建并打开minio.service文件

    vim /etc/systemd/system/minio.service
    

    内容如下,具体可参考MinIO官方文档

    [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
    

    image-20240604100001404

    注意

    重点关注上述文件中的以下内容即可

    • EnvironmentFile,该文件中可配置MinIO服务所需的各项参数
    • ExecStart,该参数用于配置MinIO服务的启动命令,其中$MINIO_OPTS$MINIO_VOLUMES,均引用于EnvironmentFile中的变量。
      • MINIO_OPTS用于配置MinIO服务的启动选项,可省略
### MinIO 使用教程和文档 #### 项目结构概述 MinIO 的官方文档提供了详细的指南来帮助用户理解和使用这一高性能对象存储服务。典型的 MinIO 文档项目目录结构如下[^1]: - `README.md` 文件提供关于项目的概览以及快速入门的信息。 - `docs` 目录下有多个子文件夹,其中包含了各类文档与教程 (`guide`)、API 参考手册(`api`) 和常见问题解答 (`faq`)。 #### 账号设置 对于初次使用者而言,在开始之前需要先完成基本的身份验证配置。账号密码可以通过编辑位于 `/etc/default/minio` 下的配置文件中的环境变量 `MINIO_ROOT_USER` 和 `MINIO_ROOT_PASSWORD` 来设定[^2]。 #### 安装过程 针对 Windows 用户的具体安装步骤包括但不限于以下几个方面[^3]: 1. **下载并解压** MinIO 应用程序至本地计算机; 2. 创建用于存放数据和服务日志的目标文件夹; 3. 编写批处理脚本来启动 MinIO 实例(由于其特殊的命令行参数设计,直接双击 `.exe` 文件并不能正常运行该应用); #### Spring Boot 集成说明 为了使 Java 开发者能够更方便地接入 MinIO 存储功能,Spring Boot 提供了一套简便的方法来进行集成: - 在 Maven 构建工具中添加相应的依赖项到 POM 文件里; - 修改应用程序配置文件 (`.yml`) 中的相关属性以适配 MinIO 设置; - 利用工厂方法模式实例化 `MinioClient` 类型的对象作为 Bean 注入容器; - 设计辅助类如 `MinioUtil.java` 来简化日常操作流程; - 最终通过上述封装好的 API 接口实现对 MinIO Server 上资源的有效管理。 #### 版本差异提示 值得注意的是,随着 MinIO 不断迭代更新,不同版本之间可能存在一定的兼容性区别。因此建议开发者们密切关注官方发布的变更记录,并优先查阅英文版的技术资料以便获取最及时准确的帮助和支持[^4]。 ```xml <!-- pom.xml --> <dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>${minio.version}</version> </dependency> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小林学习编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值