简介
MinIO是一个基于Apache License v2.0
开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb
到最大5T
不等。
本方案要求:有一台有公网IP
的服务器,可以是云服务器, 会使用Docker
、Nginx
。
搭建步骤
创建挂载目录
1 | mkdir -p minio/{data,config} |
编写 docker-compose.yaml
把里面data
和config
文件夹改成你想要存储数据和配置文件的文件夹,然后把账号密码填进去就行了。
1 | version: '3' |
启动 minio
1 | docker-compose up -d |
启动之后,进入容器查看版本:
1 | # docker exec -it minio_minio_1 bash |
打开9000
端口之后就可以看到自带的管理界面了。Minio
的存储逻辑很简单,分成多个bucket
(桶),没个桶内部就是以文件夹为层级,而且所有文件是直接存储在文件系统上的,没有分成小文件块之类的,因此你可以直接复制到你的data
文件夹内。
默认情况下,创建的bucket
的权限都是私有的,我们这里选一个名为pics
的bucket
作为公共访问目录(public)。
注意: 一定要配置bucket
的指定目录的访问策略为public
, 否则预览图片时会报错:
1 | This XML file does not appear to have any style information associated with it. The document tree is shown below. |
配置 Nginx
没办法直接用链接访问放在Minio
中的文件,虽然它提供了分享等功能,但是提供的是一个下载链接,我们需要的是类似于图片预览,因此需要一个Nginx
作为文件服务器。
修改nginx
配置,增加以下内容:
1 | # 反向代理minIO配置 |
重新加载 nginx 配置:
1 | nginx -s reload |
最后只要向这个桶中上传文件,文件就可以直接通过 Nginx 预览了。
例如:
大文件上传
上传失败
环境搭建完后,上传一个10M
的文件失败。一直提示失败,翻查手册发现并未限速。原因是使用了nginx
做代理,nginx
对上传文件大小有限制,而且默认是1M。
另外,若上传文件很大,还要适当调整上传超时时间。
修改Nginx配置
修改配置,添加client_max_body_size
字段:
1 | client_header_timeout 1m; |
重新加载nginx
配置:
1 | nginx -s reload |
Done.