首页 > 其他分享 >部署、安装和测试minio

部署、安装和测试minio

时间:2024-06-17 17:57:16浏览次数:29  
标签:MinIO MINIO 部署 访问 测试 test hello minio

部署MinIO

server01部署MinIO,安装方式采用rpm离线安装,具体步骤可参考官方文档

  1. 获取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

注:若下载缓慢,大家可直接使用课程资料中附带的安装包

  1. 安装MinIO
rpm -ivh minio-20230809233022.0.0.x86_64.rpm
  1. 集成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
    

    注意

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

    • EnvironmentFile,该文件中可配置MinIO服务所需的各项参数
    • ExecStart,该参数用于配置MinIO服务的启动命令,其中$MINIO_OPTS$MINIO_VOLUMES,均引用于EnvironmentFile中的变量。
      • MINIO_OPTS用于配置MinIO服务的启动选项,可省略不配置。
      • MINIO_VOLUMES用于配置MinIO服务的数据存储路径。
    • Restart,表示自动重启
  • 编写EnvironmentFile文件

    执行以下命令创建并打开/etc/default/minio文件

    vim /etc/default/minio
    

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

    MINIO_ROOT_USER=minioadmin
    MINIO_ROOT_PASSWORD=minioadmin
    MINIO_VOLUMES=/data
    MINIO_OPTS="--console-address :9001"
    

    注意

    • MINIO_ROOT_USERMINIO_ROOT_PASSWORD为用于访问MinIO的用户名和密码,密码长度至少8位

    • MINIO_VOLUMES用于指定数据存储路径,需确保指定的路径是存在的,可执行以下命令创建该路径。

      mkdir /data
      
    • MINIO_OPTS中的console-address,用于指定管理页面的地址。

  1. 启动MinIO

执行以下命令启动MinIO

systemctl start minio

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

systemctl status minio

设置MinIO开机自启

systemctl enable minio
  1. 访问MinIO管理页面

管理页面的访问地址为:http://192.168.10.101:9001

注意ip需要根据实际情况做出修改

MinIO核心概念

下面介绍MinIO中的几个核心概念,这些概念在所有的对象存储服务中也都是通用的。

  • 对象(Object)

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

  • 存储桶(Bucket)

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

  • 端点(Endpoint)

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

    注意:

    9000为MinIO的API的默认端口,前边配置的9001以为管理页面端口。

  • Access Key 和 Secret Key

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

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

MinIO管理页面操作

  1. 登录

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

MINIO_ROOT_USER=minioadmin
MINIO_ROOT_PASSWORD=minioadmin
  1. 创建存储桶

image

  1. 上传图片
  • 找到目标桶

image

  • 上传图片
    image
  1. 访问图片
  • 图片URL

    由于MinIO提供了HTTP访问功能,所以可以通过浏览器直接访问对象。对象URL为MinIO的Endpoint+对象的存储路径,例如下图中的图片对象的URL为http:192.168.10.101:9000/test/公寓-外观.jpg
    image

  • 访问权限

    不出意外的话,使用浏览器访问上述URL,会得到如下响应,很显然是没有访问权限。

    <Error>
        <Code>AccessDenied</Code>
        <Message>Access Denied.</Message>
        <Key>公寓-外观.jpg</Key>
        <BucketName>test</BucketName>
        <Resource>/test/公寓-外观.jpg</Resource>
        <RequestId>177BC92022FC5684</RequestId>
        <HostId>dd9025bab4ad464b049177c95eb6ebf374d3b3fd1af9251148b658df7ac2e3e8</HostId>
    </Error>
    

    若想继续访问图片,需要修改图片所在桶的访问权限,如下图所示

image

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

- `Private`
  
  只允许桶的所有者对该桶进行读写。
  
- `Public`
  
  允许所有人对该桶进行读写。
  
- `Custom`
  
  自定义访问权限。
  

若想将权限设置为只允许所有者写,但允许所有人读,就需要自定义访问权限。自定义访问权限,需要使用一个规定格式的JSON字符串进行描述,具体格式可参考[官方文档](https://min.io/docs/minio/linux/administration/identity-access-management/policy-based-access-control.html#policy-document-structure)。

例如以下JSON字符串表达的含义是:允许(`Allow`)所有人(`*`)读取(`s3:GetObject`)指定桶(`test`)的所有内容。

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

将`test`桶访问权限设置为`Custom`,并添加上述内容

image

重新访问[http:192.168.10.101:9000/test/公寓-外观.jpg](http:192.168.10.101:9000/test/公寓-外观.jpg),观察是否正常。

MinIO Java SDK

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

  1. 创建一个Maven项目

  2. 引入如下依赖

<dependency>
    <groupId>io.minio</groupId>
    <artifactId>minio</artifactId>
    <version>8.5.3</version>
</dependency>
  1. 编写如下内容
public class App {
    public static void main(String[] args) throws IOException, NoSuchAlgorithmException, InvalidKeyException {

        try {
            //构造MinIO Client
            MinioClient minioClient = MinioClient.builder()
                    .endpoint("http://192.168.10.101:9000")
                    .credentials("minioadmin", "minioadmin")
                    .build();

            //创建hello-minio桶
            boolean found = minioClient.bucketExists(BucketExistsArgs.builder().bucket("hello-minio").build());
            if (!found) {
                //创建hello-minio桶
                minioClient.makeBucket(MakeBucketArgs.builder().bucket("hello-minio").build());
                //设置hello-minio桶的访问权限
                String policy = """
                        {
                          "Statement" : [ {
                            "Action" : "s3:GetObject",
                            "Effect" : "Allow",
                            "Principal" : "*",
                            "Resource" : "arn:aws:s3:::hello-minio/*"
                          } ],
                          "Version" : "2012-10-17"
                        }""";
                minioClient.setBucketPolicy(SetBucketPolicyArgs.builder().bucket("hello-minio").config(policy).build());
            } else {
                System.out.println("Bucket 'hello-minio' already exists.");
            }

            //上传图片
            minioClient.uploadObject(
                    UploadObjectArgs.builder()
                            .bucket("hello-minio")
                            .object("公寓-外观.jpg")
                            .filename("D:\\workspace\\hello-minio\\src\\main\\resources\\公寓-外观.jpg")
                            .build());
            System.out.println("上传成功");
        } catch (MinioException e) {
            System.out.println("Error occurred: " + e);
        }
    }
}
  1. 运行测试

运行上述代码,然后查看MinIO管理页面,观察是否上传成功。

标签:MinIO,MINIO,部署,访问,测试,test,hello,minio
From: https://www.cnblogs.com/r1-12king/p/18252919

相关文章

  • modbus TCP 操作寄存器,控制气密性测试仪
    #include"modbus.h"#include<iostream>#pragmacomment(lib,"modbus.lib")usingnamespacestd;intmain(){  modbus_t*ctx;  constchar*ipAddress="192.168.1.2";//ModbusTCP从机的IP地址  constintport=8000;//......
  • UML_结构类_部署图
    部署图描述的是硬件拓扑以及在此结构上执行的软件,说白了就是软件是怎么部署到硬件设备上的,是物理层面的模型包含的元素节点表示服务器主机,用立体长矩形表示,命名方式可以直接写节点类型,也可以是实例名:节点类型物件(构件,组件)表示需要部署的软件服务,用矩形框加合适的图......
  • Prometheus+grafana部署
    分类出所需的监控项种类一般可分为︰业务级别监控/系统级别监控/网络监控/程序代码监控/日志监控/用户行为分析监控/其他种类监控大的分类还有更多的细小分类,这里给出几个例子,例如:业务监控可以包含用户访问QPS,DAU日活,访问状态,业务接口,产品转化率,充值额度,用户投诉等等这些很宏观......
  • Jmeter分布式性能测试环境的搭建常见问题
     1.在负载机上安装jmeter,修改jmeter\bin\jmeter.properties配置:1)server.rmi.ssl.disable=false改server.rmi.ssl.disable=true,注释要去掉2)启动jmeter-server.bat2.在本地测试机修改jmeter.properties配置:1)在jmeter.properties中remote_hosts=127.0.0.1:1099,192.xxx......
  • VScode配置 Django项目 使用应用下的tests.py测试
    文件目录tests.pyimportosimportsysfrompathlibimportPath#AddbasedirectorytoPYTHONPATHif__name__=="__main__":os.environ.setdefault("DJANGO_SETTINGS_MODULE","MyshopBack.settings")BASE_DIR=Path(__file......
  • 软件工程项目开发文档资料(规格说明书、详细设计、测试计划、验收报告)
      前言:在软件开发过程中,文档资料是非常关键的一部分,它们帮助团队成员理解项目需求、设计、实施、测试、验收等各个环节,确保项目的顺利进行。以下是各个阶段的文档资料概述:软件项目管理部分文档清单: 工作安排任务书,可行性分析报告,立项申请审批表,产品需求规格说明书,需求调......
  • SpringBoot配置第三方专业缓存技术Memcached 下载 安装 整合测试 5000字详解
    Memcached下载和安装是一个国内使用量还是比较大的技术打开文件夹我们需要在命令行窗口启动注意要以管理员方式运行先尝试进入指定文件然后又再次运行下载memcached.exe-dinstall启动memcached.exe-dstart停止memcached.exe-dstopmemcached.exe-din......
  • CogVLM/CogAgent环境搭建&推理测试-CSDN博客
    引子最近在关注多模态大模型,之前4月份的时候关注过CogVLM(https://blog.csdn.net/zzq1989_/article/details/138337071?spm=1001.2014.3001.5501)。模型整体表现还不错,不过不支持中文。智谱AI刚刚开源了GLM-4大模型,套餐里面包含了GLM-4V-9B大模型,模型基于GLM-4-9B的多模态模型GL......
  • fiddler进行修改网络进行弱网测试
    一、开启弱网模式Rules->Performance->SimulateModemSpeeds二、开始配置需要的网速按照下图的位置打开修改参数,或者按住快捷键ctrl+R,进入文件修改参数三、修改参数按住ctrl+F调出搜索框,快速搜索到需要定位的位置设置2G网络、3G网络......
  • 探索高效自动化测试新工具:FlaUI
    探索高效自动化测试新工具:FlaUI项目地址:https://gitcode.com/Roemer/FlaUIFlaUI是一个开源的.NET库,专为Windows桌面应用程序提供自动化测试支持。它允许开发者以编程方式控制和测试任何基于UI的应用程序,无论它们是WPF、WinForms还是UWP应用。本文将深入探讨FlaUI的技术原理、......