Github标星19K+Star,10分钟自建对象存储服务!

SpringBoot实战电商项目mall(25k+star)地址:github.com/macrozheng/…html

摘要

对象存储服务能够用来存储各种文件,mall项目中的图片存储采用的是OSS,今天咱们来说下如何本身搭建一个对象存储服务来存储图片。git

MinIO简介

MinIO 是一款基于Go语言的高性能对象存储服务,在Github上已有19K+Star。它采用了Apache License v2.0开源协议,很是适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等。 本文将使用 MinIO 来自建一个对象存储服务用于存储图片。github

安装及部署

MinIO的安装方式有不少,这里咱们使用它在Docker环境下的安装方式。docker

  • 下载MinIO的Docker镜像:
docker pull minio/minio
复制代码
  • 在Docker容器中运行MinIO,这里咱们将MiniIO的数据和配置文件夹挂在到宿主机上:
docker run -p 9090:9000 --name minio \
  -v /mydata/minio/data:/data \
  -v /mydata/minio/config:/root/.minio \
  -d minio/minio server /data
复制代码
  • 运行成功后,访问该地址来登陆并使用MinIO,默认Access Key和Secret都是minioadminhttp://192.168.6.132:9090

上传文件及使用

经过使用MinIO的网页端便可完成文件的上传下载功能,下面咱们以图片上传下载为例来演示下该功能。bash

  • 在存储文件以前,咱们须要新建一个存储桶:

  • 存储桶建立完成后,经过上传按钮能够上传文件,这里咱们上传一张图片:

  • 图片上传完成后,咱们能够经过拷贝连接按钮来获取图片访问路径,可是这只是个临时的访问路径:

  • 要想获取一个永久的访问路径,须要修改存储桶的访问策略,咱们能够点击存储桶右上角的编辑策略按钮来修改访问策略;

  • 这里有三种访问策略能够选择,一种只读、一种只写、一种可读可写,这里咱们选择只读便可,可是须要注意的是,访问前缀须要设置为*.*,不然会没法访问;

  • 设置完成后,咱们只须要经过拷贝连接中的前一串路径便可永久访问该文件;

  • 访问图片效果展现:

MinIO客户端的使用

虽然MinIO的网页端管理已经很方便了,可是官网仍是给咱们提供了基于命令行的客户端MinIO Client(简称mc),下面咱们来说讲它的使用方法。session

经常使用命令

下面咱们先来熟悉下mc的命令,这些命令和Linux中的命令有不少类似之处。ide

命令 做用
ls 列出文件和文件夹
mb 建立一个存储桶或一个文件夹
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> <API-SIGNATURE>
复制代码
  • 对于咱们的MinIO服务能够这样配置:
mc config host add minio http://192.168.6.132:9090 minioadmin minioadmin S3v4
复制代码

经常使用操做

  • 查看存储桶和查看存储桶中存在的文件:
# 查看存储桶
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, public
mc policy set download minio/test/
# 查看存储桶当前权限
mc policy list minio/test/
复制代码

参考资料

详细了解MinIO能够参考官方文档:docs.min.io/cn/minio-qu…学习

公众号

mall项目全套学习教程连载中,关注公众号第一时间获取。ui

公众号图片
相关文章
相关标签/搜索