【CentOS7】MiniO对象存储利用宝塔面板对SSL配置 您所在的位置:网站首页 centos7安装配置开源网站 【CentOS7】MiniO对象存储利用宝塔面板对SSL配置

【CentOS7】MiniO对象存储利用宝塔面板对SSL配置

2023-08-31 09:10| 来源: 网络整理| 查看: 265

MiniO简介:

MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。MinIO是一个非常轻量的服务,可以很简单的和其他应用的结合,类似 NodeJS, Redis 或者 MySQL。

〇、背景:

MiniO对象存储服务看起来跟阿里的OSS很像,前段时间在阿里的ECS上部署了一下,用起来感觉还不错,但是这在阿里ECS上部署会收费!经过仔细研究会产生一个叫做按量付费的服务,虽然钱不多,但是每天都有邮件提醒甚是不爽!每天凌晨都会发送扣费信息。无奈,还是在自建服务器上进行搭建吧。

在这里插入图片描述

准备工作: 1、宝塔面板 7.6.0 (已安装Nginx 1.20.1、Docker 3.6) 2、二级域名 3、SSL证书(oss.pem、oss.key)

一、Docker中拉取minio镜像

docker pull minio/minio

二、启动docker MiniO服务

docker run -d -v \ /www/wwwroot/minio/data/usb/minio:/www/wwwroot/minio/data/usb/minio \ -p 9000:9000 \ -e "MINIO_ROOT_USER=账号" \ -e "MINIO_ROOT_PASSWORD=密码" \ minio/minio server /www/wwwroot/minio/data/usb/minio

此时访问ip:9001就能访问了 在这里插入图片描述

进入之后可以添加存储桶,上传文件

三、Nginx配置SSL

在宝塔的软件商店,找到已安装软件,找到Nginx(如下图),点击设置 在这里插入图片描述

选择配置修改 在这里插入图片描述

把以下配置加进去 注意:SSL证书key和pem需要自定义路径,我放到了/www/server/nginx/conf/cert/目录下

server{ listen 9001 ssl; server_name 你的域名; ssl_certificate /www/server/nginx/conf/cert/oss.pem; ssl_certificate_key /www/server/nginx/conf/cert/oss.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; location / { proxy_pass http://localhost:9000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }

重启Nginx,此时再次访问你的域名,就是以Https安全协议访问了 在这里插入图片描述

四、MiniO在Springboot中的使用

1、POM引入minio

io.minio minio 8.2.2

2、application.properties的配置

#minio配置 minio.endpoint=http://你的域名 minio.port=80 minio.accessKey=账号 minio.secretKey=密码 minio.secure=false minio.bucketName=存储桶名称 minio.configDir=/www/wwwroot/minio/data/usb/minio/ VARIFY_PATH=/www/wwwroot/minio/data/usb/minio/minio/varifycode/ VARIFY_URL=http://域名/minio/varifycode/

3、MinioConfig配置类

import io.minio.MinioClient; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * @Title: * @Description: * @author:real * @Date: 2021/6/25 9:03 * @Version: 1.0 */ @Configuration public class MinioConfig{ @Value("${minio.endpoint}") private String endpoint; @Value("${minio.port}") private int port; @Value("${minio.accessKey}") private String accessKey; @Value("${minio.secretKey}") private String secretKey; @Value("${minio.secure}") private Boolean secure; @Value("${minio.bucketName}") private String bucketName; @Bean public MinioClient getMinioClient() { MinioClient minioClient = MinioClient.builder().endpoint(endpoint, port, secure) .credentials(accessKey, secretKey) .build(); return minioClient; } }

4、MinioService

import org.springframework.web.multipart.MultipartFile; /** * @Title: * @Description: * @author: real * @Date: 2021/6/25 13:38 * @Version: 1.0 */ public interface MinioService { boolean isExitBucket(String bn); void putObject(MultipartFile multipartFile,String date); } 5、MinioServiceImpl import io.minio.BucketExistsArgs; import io.minio.MinioClient; import io.minio.PutObjectArgs; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import top.count.service.MinioService; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.util.Date; /** * @Title: * @Description: * @author: real * @Date: 2021/6/25 13:39 * @Version: 1.0 */ @Service public class MinioServiceImpl implements MinioService { @Autowired private MinioClient minioClient; @Value("${minio.bucketName}") private String bucketName; @Override public boolean isExitBucket(String bn) { try { return minioClient.bucketExists(BucketExistsArgs.builder().bucket(bn).build()); } catch (Exception e) { e.printStackTrace(); } return false; } @Override public void putObject(MultipartFile multipartFile,String date) { try { String fileName = UUID.randomUUID().toString().replace("-","") + "." + getSuffix(multipartFile.getOriginalFilename()); String finalPath = date + "/" + fileName; minioClient.putObject(PutObjectArgs.builder() .stream(multipartFile.getInputStream(), multipartFile.getSize(),PutObjectArgs.MIN_MULTIPART_SIZE) .object(finalPath) .contentType(multipartFile.getContentType()) .bucket(bucketName) .build()); System.out.println("文件已上传!"); } catch (Exception e) { e.printStackTrace(); } } /** * 获取文件后缀 * @param fileName * @return */ protected static String getSuffix(String fileName) { int index = fileName.lastIndexOf("."); if (index != -1) { String suffix = fileName.substring(index + 1); if (!suffix.isEmpty()) { return suffix; } } throw new IllegalArgumentException("非法文件名称:" + fileName); } }

五、以上就是MiniO的总结,备忘



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有