如果想搭建一个优雅、简单、功能完备的静态资源服务,那就用MinIO吧。
1 引言
开发 Web 项目过程中,经常需要处理静态资源(如图片、视频、音频,js库 ,css 库等),一般来说,若项目中需要用到这些资源文件,我们常用的有以下几种方法:
- 本地存储:即在项目工程中的 static 目录下,建立 js/css/icon/font/image/lib/audio/video 等目录,分别存放对应格式的资源文件。使用时,在 html 文件中使用相对位置引用进行。
- 使用代理搭建静态资源服务:即把资源存放于某一文件目录,使用代理服务器(如 nginx ,apache等)对目录进行映射,构建成资源服务。使用时,在 html 文件中使用代理服务的 url 地址进行引用。
- 使用第三方工具搭建静态资源服务:使用第三方开源的文件存储或对象存储工具,或者自己写个程序实现可以获取文件的接口。使用时,使用对应的 url 地址或接口地址。
- 使用在线静态资源服务:如阿里云、CDN等服务。
对于本地存储,缺点就很明显,资源与代码文件混合一起,没有必要,而且不方便扩展。对于本地内部部署的应用,显然是自己搭建静态资源服务比较稳妥。对于使用代理服务和第三方工具,相比起来,代理服务仅做映射,虽然可用,但功能单一,仅做映射,没有其它管理功能,也不方便扩展。使用第三方文件或对象存储工具,可以对文件进行管理、也能考虑高扩展,高性能、高可用等因素,因此是很好的选择,其中,MinIO 就是这样一款好用的对象存储工具,简单,快捷而且功能完备。
本文则是通过对 MinIO 的安装、配置与使用,构建静态资源服务,从而把图片、视频、音频,第三方 js 库等资源独立部署,访问;还会对 MinIO 提供的 Java API 进行使用简单介绍,以便于进一步开发。
2 MinIO 简介
按 MinIO 官方介绍,MinIO 是高性能的对象存储(块存储、文件存储和对象存储的区别,可参考架构师都知道的分布式对象存储解决方案),兼容 Amazon S3 接口,充分考虑开发人员的需求和体验;支持分布式存储,具备高扩展性、高可用性;部署简单但功能丰富。官方的文档也很详细。它有多种不同的部署模式(单机部署,分布式部署)。为什么说 MinIO 简单易用,原因就在于它的启动、运行和配置都很简单。可以通过 docker 方式进行安装运行,也可以下载二进制文件,然后使用脚本运行。
本文以最简单的方式进行讲解,在 linux 机器中,单机部署,运行二进制文件。
3 MinIO 运行与静态资源使用
3.1 MinIO 获取
MinIO 开发文档中,下载地址如下:
- linux:
https://dl.min.io/server/minio/release/linux-amd64/minio
- windows:
https://dl.min.io/server/minio/release/windows-amd64/minio.exe
本文在 linux 中运行。
3.2 MinIO 启动与运行
3.2.1 前台简单启动
把下载的 minio 文件存放到某个目录作为运行目录(如 /opt/minio),新建一个目录(如/opt/minio-data)作为 mini