minio介绍
minio官方介绍:mino是高性能,对Kubernetes友好的对象存储。MinIO 是一款高性能、分布式的对象存储系统. 它是一款软件产品, 可以100%的运行在标准硬件。即X86等低成本机器也能够很好的运行MinIO。同时,它在机器学习、大数据、私有云、混合云等方面的存储技术上也独树一帜。
个人感觉mino用起来简单方便,只需要下载一个minio的可执行文件,配置后可以单机运行,同时也可以配置实现对分布式对象存储系统。
1. minio下载及安装
linux系统版本下载
CPU架构 | 下载地址 |
---|---|
64-bit Intel/AMD | https://dl.min.io/server/minio/release/linux-amd64/minio |
64-bit ARM | https://dl.min.io/server/minio/release/linux-arm64/minio |
64-bit PowerPC LE | https://dl.min.io/server/minio/release/linux-ppc64le/minio |
IBM Z-Series | https://dl.min.io/server/minio/release/linux-s390x/minio |
- 下载minio可执行文件
> wget https://dl.min.io/server/minio/release/linux-amd64/minio
- 我们们创建minio目录为/var/www/minio,将下载的minio文件拷贝到该目录,并授权。
> sudo cp minio /var/www/minio/minio
> sudo chmod +x minio
- 编写minio启动脚本(这里我们配置的是单机版,分布式的可以参考官方文档)
# startup.sh
export MINIO_ROOT_USER=minio
export MINIO_ROOT_PASSWORD=minio0227
nohup /var/www/minio/minio server --address=0.0.0.0:9000 --console-address=0.0.0.0:9001 --config-dir /var/www/minio/conf /var/www/minio/data > /var/www/minio/minio.log 2>&1&
// 配置数据访问地址端口为9000
// 配置后台访问地址端口为9001
注:minio启动参数配置详情可参考以下链接:http://docs.minio.org.cn/minio/baremetal/reference/minio-server/minio-server.html
- 运行脚本,启动minio:
sudo ./startup.sh
- 登录minio后台
http://xxx.xxx.xxx.xxx:9000
2. 通过管理后台对minio进行管理
- 登录管理后台
使用刚才启动配置的账号和密码登录,可以进入到后台
- 创建桶
进入后点击右上角Create Bucket,创建一个桶(bucket),我这里创建了一个jt905的桶 - 配置桶的Access Rules
桶创建好后,点击右上角的Manage按钮,进入到桶的配置界面
选择Access Rules的tab页,右边有个添加Add Access Rules按钮,点击添加一下访问规则
Prefix: *.*
Access: readonly
3. 上传图片并访问
- 点击桶界面的Browse按钮进入到对象管理界面:
这里可以管理桶里面的对象 - 上传对象
点击右上角的Upload按钮,这里我们上传“3.png”的到图片到bucket为jt905的桶 - 访问图片
http://xxx.xxx.xxx.xxx:9000/jt905/3.png
4. java sdk集成,上传对象
1.maven引入sdk包
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.3.6</version>
</dependency>
2. 代码实现上传
/**
* @description:minio文件上传
* @author: CKeen
* @date: 2022/2/27 7:39 上午
*/
public class FileUploader {
public static void main(String[] args) throws NoSuchAlgorithmException, InvalidKeyException, IOException {
try {
// Create a minioClient with the MinIO server playground, its access key and secret key.
MinioClient minioClient =
MinioClient.builder()
.endpoint("http://xxx.xxx.xxx.xxx:9000")
.credentials("minio", "minio0227")
.build();
boolean found =
minioClient.bucketExists(BucketExistsArgs.builder().bucket("jt905").build());
if (!found) {
minioClient.makeBucket(MakeBucketArgs.builder().bucket("jt905").build());
} else {
System.out.println("Bucket 'jt905' already exists.");
}
minioClient.uploadObject(
UploadObjectArgs.builder()
.bucket("jt905")
.object("123456789.pdf") // minio存储文件
.filename("/Users/ckeen/Downloads/11440306007542662H4440502002001.pdf") // 本地文件路径
.build());
System.out.println(
"'/Users/ckeen/Downloads/11440306007542662H4440502002001.pdf' is successfully uploaded as "
+ "object '123456789.pdf' to bucket 'jt905'.");
} catch (MinioException e) {
System.out.println("Error occurred: " + e);
System.out.println("HTTP trace: " + e.httpTrace());
}
}
}
注: 这里只是测试上传对象,其他的操作可以参考官方文档说明
还有多种语言提供的SDK