MINIO介绍

MinIO 是在 Apache License v2.0 下发布的高性能对象存储,100% 开放源代码。 它是与 Amazon S3 云存储服务兼容的 API。MinIO 是一个高性能的对象存储原生支持 Kubernetes 部署的解决方案。Minio 是一个非常轻量的服务,它可以存储⼤容量的⾮结构化数据,例如图⽚、视频、⽇志⽂件、备份数据和容器/虚拟机镜像等。对于⼤多数的企业来说,这可以说是最为理想的存储媒介了。而一个对象文件可以是任意大小,从几 kb 到最大 5T 不等。

前言

需要用到的东西

1.docker环境

2.服务器

3.域名以及域名证书

步骤

1.安装docker

2.使用docker安装MINIO

3.访问MINIO控制台登陆并上传文件测试

4.使用代码进行文件上传

5.域名以及域名SSL证书的准备

6.配置公钥私钥开启https

一、安装docker

宝塔服务器面板,一键全能部署及管理

对象存储对接swift 对象存储 http_容器

服务器安装宝塔面板,成功之后会返回访问地址以及账号密码,如果不小心关掉了可以在服务器上通过shell连接工具连接 成功后输入 bt 操作面板

 

对象存储对接swift 对象存储 http_对象存储对接swift_02

 进入宝塔页面之后点击左侧docker直接安装docker

对象存储对接swift 对象存储 http_https_03

 二、使用docker安装MINIO

下载MINIO镜像

docker pull minio/minio

 查看镜像

docker images
docker run --name minio -p 9090:9000 -p 9999:9999 -d \
--restart=always -e \
"MINIO_ROOT_USER=admin" \
-e "MINIO_ROOT_PASSWORD=123456" \
-v /home/minio/data:/data \
-v /home/minio/config:/root/.minio minio/minio server /data --console-address '0.0.0.0:9999'

命令

描述

-d

后台运行容器,并返回容器ID

-p 9090:9000

将容器内9090端口映射至宿主机9000端口,这个是访问的端口

-p 9999:9999

将容器内9999端口映射至宿主机9999端口

--restart=always

开启自动重启

-e \ "MINIO_ROOT_USER=admin"

设置用户名为”admin“

-e \ "MINIO_ROOT_PASSWORD=123456"

设置密码为“123456”

-v /home/minio/data:/data

安装目录

三、访问MINIO控制台登陆并上传文件测试

执行完成命令之后访问minio管理界面 ,服务器ip:9090

对象存储对接swift 对象存储 http_对象存储对接swift_04

 用户名密码输入刚才命令中设置的用户名和密码

对象存储对接swift 对象存储 http_容器_05

点此处创建一个存储桶

 

对象存储对接swift 对象存储 http_https_06

创建完成之后即可在存储桶中上传文件

对象存储对接swift 对象存储 http_https_07

 上传成功之后点击上传的文件可以进行各种操作,可以直接查看

对象存储对接swift 对象存储 http_https_08

 

对象存储对接swift 对象存储 http_容器_09

 四、使用代码进行文件上传

第一步:导入minio的依赖 ,参考文档 Minio官方文档

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

第二步:编写上传代码

public class MinioUpload {

    private static final String accessKey = "admin";//账号
    private static final String secretKey = "123456";//密码
    private static final String bucket = "test";//存储桶名称

    public static String imageUpload(MultipartFile file){
        String filePath = "";
        try {
            // 构建一个Minio客户端
            MinioClient minioClient = MinioClient.builder()
                    //创建容器时指定的账号
                    .credentials(accessKey, secretKey)
                    //上传地址
                    .endpoint("http://服务器ip:9090").build();
            // 对象键(Key)是对象在存储桶中的唯一标识。
            String key = "";
            //文件名
            key = file.getOriginalFilename();
            //构建上传内容
            PutObjectArgs putObjectArgs = PutObjectArgs.builder()
                    .object(key)	//文件名
                    .contentType(file.getContentType())	//文件类型
                    .bucket(bucket)  //存储桶名称
                    .stream(file.getInputStream(), file.getSize(), -1).build(); //文件流,以及大小,-1代表不分片
            //执行上传
            minioClient.putObject(putObjectArgs);
            //上传之后的文件地址是:
            filePath = "http://服务器ip:9090/"+ bucket + "/" + key;
            log.info("上传成功:{}",filePath);
        } catch(MinioException | IOException | NoSuchAlgorithmException | InvalidKeyException e) {
            log.error(String.valueOf(e));
        }
        return filePath;
    }
}

第三步:执行代码测试

对象存储对接swift 对象存储 http_docker_10

 

对象存储对接swift 对象存储 http_容器_11

 接下来在浏览器访问测试,http://服务器ip:9090/存储桶名称/文件名

对象存储对接swift 对象存储 http_对象存储对接swift_12

 这个意思是说匿名(游客没登录)用户没有访问权限,如果我们需要我们上传的文件可以被匿名用户访问,那么需要添加访问权限:找到文件存储目录,点击manager设置access Rules添加访问规则

对象存储对接swift 对象存储 http_对象存储对接swift_13

对象存储对接swift 对象存储 http_容器_14

 保存规则设置之后再次访问

对象存储对接swift 对象存储 http_docker_15

五、域名以及域名SSL证书的准备

上述方式只支持http方式访问,在项目上线的时候,大多数情况都是需要通过https访问的,提高安全性,这时候就需要准备域名和域名证书。

以腾讯云为例,购买好自己喜欢的域名之后还需要通过ICP备案才可以正常使用

对象存储对接swift 对象存储 http_java_16

 

对象存储对接swift 对象存储 http_对象存储对接swift_17

六、配置公钥私钥开启https 

下载完成之后进行解压,然后会看到这么几个文件,我们需要用到".key"后缀文件和".crt"后缀文件

对象存储对接swift 对象存储 http_docker_18

".key"后缀文件重命名为"private.key",".crt"后缀文件重命名为"public.crt",因为MINIO只识别这个名称的文件

对象存储对接swift 对象存储 http_对象存储对接swift_19

 然后把文件上传到服务器中MINIO对应的配置文件处,可以直接通过宝塔面板可视化操作

对象存储对接swift 对象存储 http_docker_20

 上传完成后重启MINIO

对象存储对接swift 对象存储 http_java_21

 接着进入MINIO控制台,通过https访问,选择任意一个文件点击分享可以看到前缀也变成https了

对象存储对接swift 对象存储 http_docker_22

 接着在浏览器通过https访问文件测试

对象存储对接swift 对象存储 http_docker_23