在咱们平时做我的项目的时候,文件存储是个很常见的需要。这时候咱们就会用到对象存储服务,平时咱们可能会抉择OSS、AWS S3这类第三方服务。明天带大家搭建一款本人的对象存储服务,带可视化治理,用起来也挺简略!
SpringBoot实战电商我的项目mall(50k+star)地址:https://github.com/macrozheng/mall
MinIO简介
MinIO 是一款基于Go语言的高性能对象存储服务,在Github上已有28K+Star。它采纳了Apache License v2.0开源协定,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等。
装置
应用Docker装置MinIO服务非常简单,几个命令就能够搞定!
- 首先下载MinIO的Docker镜像;
docker pull minio/minio
- 下载实现后应用如下命令运行MinIO服务,留神应用
--console-address
指定MinIO Console的运行端口(否则会随机端口运行):
docker run -p 9090:9000 -p 9001:9001 --name minio \-v /mydata/minio/data:/data \-e MINIO_ROOT_USER=minioadmin \-e MINIO_ROOT_PASSWORD=minioadmin \-d minio/minio server /data --console-address ":9001"
- 运行胜利后就可拜访MinIO Console的治理界面了,输出账号密码
minioadmin:minioadmin
即可登录,拜访地址:http://192.168.7.142:9090
MinIO Console应用
MinIO Console是MinIO自带的可视化管理工具,比起上一代的可视化工具性能还是弱小了不少的,上面咱们来体验下这个工具。
- 先来看下上一代的MinIO Browser,根本只反对存储桶及文件的治理性能;
- 再来看下MinIO Console,不仅反对了存储桶、文件的治理,还减少了用户、权限、日志等治理性能,强了不少;
- 在存储文件之前,咱们首先得创立一个存储桶;
- 创立胜利后,再上传一个文件;
- 上传胜利后如果你想从内部拜访文件的话,须要把拜访策略设置为公开,这里的策略只有公开和公有两种,感觉不太灵便;
- 之后把地址改为外网拜访地址即可拜访图片,默认只能下载不能间接查看(这个问题咱们上面再解决),外网拜访地址:http://192.168.7.142:9090/blo...
客户端应用
其实对于对象存储来说,MinIO Console的性能还是不够用的,所以官网还提供了基于命令行的客户端MinIO Client(简称mc),上面咱们来讲讲它的应用办法。
常用命令
咱们先来相熟下mc的命令,这些命令和Linux中的命令有很多相似之处。
命令 | 作用 |
---|---|
ls | 列出文件和文件夹 |
mb | 创立一个存储桶或一个文件夹 |
rb | 删除一个存储桶或一个文件夹 |
cat | 显示文件和对象内容 |
pipe | 将一个STDIN重定向到一个对象或者文件或者STDOUT |
share | 生成用于共享的URL |
cp | 拷贝文件和对象 |
mirror | 给存储桶和文件夹做镜像 |
find | 基于参数查找文件 |
diff | 对两个文件夹或者存储桶比拟差别 |
rm | 删除文件和对象 |
events | 治理对象告诉 |
watch | 监听文件和对象的事件 |
policy | 治理拜访策略 |
session | 为cp命令治理保留的会话 |
config | 治理mc配置文件 |
update | 查看软件更新 |
version | 输入版本信息 |
装置及配置
因为MinIO服务端中并没有自带客户端,所以咱们须要装置并配置完客户端后能力应用,这里以Docker环境下的装置为例。
- 下载MinIO Client 的Docker镜像;
docker pull minio/mc
- 在Docker容器中运行mc;
docker run -it --entrypoint=/bin/sh minio/mc
- 运行实现后咱们须要进行配置,将咱们本人的MinIO服务配置到客户端下来,配置的格局如下;
mc config host add <ALIAS> <YOUR-S3-ENDPOINT> <YOUR-ACCESS-KEY> <YOUR-SECRET-KEY>
- 对于咱们的MinIO服务能够这样配置。
mc config host add minio http://192.168.7.142:9090 minioadmin minioadmin
罕用操作
- 查看存储桶和查看存储桶中存在的文件;
# 查看存储桶mc ls minio# 查看存储桶中存在的文件mc ls minio/blog
- 创立一个名为
test
的存储桶;
mc mb minio/test
- 共享
avatar.png
文件的下载门路;
mc share download minio/blog/avatar.png
- 查找
blog
存储桶中的png文件;
mc find minio/blog --name "*.png"
- 设置
test
存储桶的拜访权限为只读
。
# 目前能够设置这四种权限:none, download, upload, publicmc policy set download minio/test/# 查看存储桶以后权限mc policy list minio/test/
兼容AWS S3
当咱们对接第三方服务要用到对象存储时,这些服务往往都是反对AWS S3的。比如说一个直播的回放性能,须要对象存储来存储回放的视频,因为MinIO兼容AWS S3的大多数API,咱们能够间接拿它当AWS S3来应用。
- 咱们能够下载个AWS S3的客户端来试试,MinIO到底能不能反对S3的API,这里应用的是
S3 Browser
,下载地址:https://s3browser.com/
- 装置好
S3 Browser
之后,增加一个Account,输出相干登录信息,留神抉择Account类型为S3 Compatible Storage
;
- 连贯胜利后,咱们能够看见之前咱们创立的存储桶和上传的文件;
S3 Browser
这个工具性能还是很弱小的,MinIO Console和它比起来切实太弱了;
- 下面有提到一个问题,图片文件无奈间接查看,其实是因为拜访图片文件时,MinIO返回的Content-Type为
application/octet-stream
导致的;
- 接下来咱们能够通过
S3 Browser
来批改默认返回的响应头;
- 而后将
.png
结尾的文件的响应头改为image/png
就能够了;
- 须要留神的是之前上传的文件须要从新上传下才能够失效,此时拜访链接就能够间接查看图片了;
- 如果你想批改存储桶的拜访权限的话间接通过
Permissions
标签批改即可,是不是比MinIO Console灵便多了。
总结
如果你想自建对象存储服务的话,MinIO的确是首选。它能兼容AWS S3的API,应用MinIO相当于是在应用AWS S3,能兼容一些支流的第三方服务。不过它自带的客户端MinIO Console的确有点鸡肋,还好反对了AWS S3,能够应用一些功能强大的S3客户端工具。
参考资料
官网文档:https://docs.min.io/
本文 GitHub https://github.com/macrozheng/mall-learning 曾经收录,欢送大家Star!