Windows环境使用Minio如此简单

2023-12-14 15:46:45

Windows环境下使用Minio对象存储真的好简单

很久很久以前,开发个Web程序,上传文件一直是在单个服务器上。后来,微服务流行后,再用单个服务器存储文件(配置虚拟目录方式)或者配置个FTP服务端再在程序中进行ftp的上传,总感觉没那么优雅~~-_-! 有一天Minio出现了,完美解决分布式存储文件存储的问题,而且足够轻量。

1、下载及安装

官网地址:https://min.io/download#/windows
分别下载服务端、客户端:
分别下载服务端和客户端

1.1、运行

1、在D盘建立文件夹Minio(d:/Minio),创建子文件夹进行存储(d:/Minio/MinioData)
2、把下载的服务端:minio.exe、客户端:mc.exe,拷贝到d:/Minio下
3、按住Shift再点击 鼠标右键,打开PowerShell 或Terminal

  • PowerShell运行:.\minio.exe server d:\Minio\MinioData
    4、Terminal运行:minio.exe server d:\Minio\MinioData
    运行minio

1.2、配置

点击:http://127.0.0.1:9000,或者直接浏览器输入打开网页,进入登录界面

  • 默认账号:minioadmin
  • 默认密码:minioadmin
    在这里插入图片描述
1.2.1、创建桶

在这里插入图片描述
点击“Create Bucket +”按钮,设置桶名并创建
如需要特定某个用户访问,可以点击 “Identity” -> “Create User +”,创建用户
在这里插入图片描述
使用API接入Minio需要创建AccessKey,点击“Access Keys” -> “Create access key +”,进行创建,默认随机一对,也可自行设置
在这里插入图片描述

如果嫌每次手动运行minio.exe麻烦,也可以花几分钟做成Windows服务,开机自动运行

  • 下载WinSW,下载地址:https://github.com/winsw/winsw/releases
    在这里插入图片描述
  • 拷贝到D:\Minio\,重命名成你想要的服务,如:minio-server.exe
  • 同目录下创建配置文件,minio-server.xml(注意需要同名)
  • 配置minio-server.xml文件
<service>
	<id>minio-server</id>
	<name>minio-server</name>
	<!-- 如果不能启动,可将description中的中文去除 -->
	<description>Minio文件存储服务</description>
	<startmode>Automatic</startmode>
	<!-- 也可以设置环境变量 -->
	<env name="HOME" value="%BASE%"/>
	<executable>%BASE%\minio.exe</executable>
	<arguments>server "%BASE%\MinioData"</arguments>
	<!-- 配置日志 -->
	<logpath>%BASE%\logs</logpath>
	<log mode="roll-by-size-time">
    	<sizeThreshold>10240</sizeThreshold>
      	<pattern>yyyyMMdd</pattern>
	    <autoRollAtTime>00:00:00</autoRollAtTime>
      	<zipOlderThanNumDays>5</zipOlderThanNumDays>
      	<zipDateFormat>yyyyMMdd</zipDateFormat>
    </log>
</service>

就可以安装成服务了

  • 安装服务:minio-server.exe install

  • 启动服务:minio-server.exe start

  • 停止服务:minio-server.exe stop

  • 卸载服务:minio-server.exe uninstall

  • 如果想改登录账号及密码,可以新建一个bat文件,内容为:

set MINIO_ACCESS_KEY=admin
set MINIO_SECRET_KEY=12345678
minio.exe server

如果需要特定的端口,也可以这样:

set MINIO_ACCESS_KEY=admin
set MINIO_SECRET_KEY=12345678
minio.exe server --address:9991 d:\Minio\MinioData

再配合WinSW就可以实现了

<service>
	<id>minio-server</id>
	<name>minio-server</name>
	<!-- 如果不能启动,可将description中的中文去除 -->
	<description>Minio文件存储服务</description>
	<startmode>Automatic</startmode>
	<executable>run.bat</executable>
</service>

在这里插入图片描述
这就已经成功安装服务了
卸载服务
在这里插入图片描述
当然你也可以用WinSW把java -jar变成一个Windows服务

1.3、Minio支持多种语言的SDK

链接:https://min.io/docs/minio/linux/developers/minio-drivers.html?ref=docs

1.3.1、Java中使用

Maven引用

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

Java中使用

import io.minio.BucketExistsArgs;
import io.minio.MakeBucketArgs;
import io.minio.MinioClient;
import io.minio.UploadObjectArgs;
import io.minio.errors.MinioException;
import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;

public class FileUploader {
  public static void main(String[] args)
      throws IOException, NoSuchAlgorithmException, InvalidKeyException {
    try {
      // Create a minioClient with the MinIO server playground, its access key and secret key.
      MinioClient minioClient =
          MinioClient.builder()
              .endpoint("https://play.min.io")
              .credentials("Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG")
              .build();

      // Make 'asiatrip' bucket if not exist.
      boolean found =
          minioClient.bucketExists(BucketExistsArgs.builder().bucket("asiatrip").build());
      if (!found) {
        // Make a new bucket called 'asiatrip'.
        minioClient.makeBucket(MakeBucketArgs.builder().bucket("asiatrip").build());
      } else {
        System.out.println("Bucket 'asiatrip' already exists.");
      }

      // Upload '/home/user/Photos/asiaphotos.zip' as object name 'asiaphotos-2015.zip' to bucket
      // 'asiatrip'.
      minioClient.uploadObject(
          UploadObjectArgs.builder()
              .bucket("asiatrip")
              .object("asiaphotos-2015.zip")
              .filename("/home/user/Photos/asiaphotos.zip")
              .build());
      System.out.println(
          "'/home/user/Photos/asiaphotos.zip' is successfully uploaded as "
              + "object 'asiaphotos-2015.zip' to bucket 'asiatrip'.");
    } catch (MinioException e) {
      System.out.println("Error occurred: " + e);
      System.out.println("HTTP trace: " + e.httpTrace());
    }
  }
}

其他自行摸索了,祝用餐愉快!

文章来源:https://blog.csdn.net/jackymvc/article/details/130883335
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。