这两年把Minio吹上天了,是真的好用文件存储这块不用咱们手撸代码了,就导致了一大批跟风用户
我之前是用FastDFS的,后来也不得不跟风了
本文简单说下如何部署Minio以及重点讲下如何使用https访问问题
部署问题直接上脚本:
# Minio文件存储服务
docker run --name minio \
-p 9000:9000 \
-p 9009:9009 \
--restart=always \
-e TZ="Asia/Shanghai" \
-d --restart=always \
-e "MINIO_ROOT_USER=username" \
-e "MINIO_ROOT_PASSWORD=password" \
-v /datas/minio/data:/data \
-v /datas/minio/conf:/root/.minio \
minio/minio server /data \
--console-address '0.0.0.0:9009'
上面搞定后,就直接可以通过浏览器访问了
http://127.0.0.1:9000/, 输入username和password即可,minio里面的配置自行百度
可以去腾讯云申请的ssl证书文件到服务器,Nginx的话上传解压后的nginx文件夹下的1_xxx.key和2_xxx.crt文件,
nginx配置,增加
# 配置minio的https访问
server {
listen 443 ssl;
server_name your.domain.com;
# 证书配置,写服务绝对路径
ssl_certificate /usr/local/nginx/conf/ssl/your.domain.com_bundle.crt;
ssl_certificate_key /usr/local/nginx/conf/ssl/your.domain.com.key;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
proxy_pass https://172.17.0.3:9000;
# 下面这三个需要有
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
上面配置了Nginx转发,重启Nginx后,https就生效了
private static MinioClient initMinio(String minioUrl, String minioName,String minioPass) {
if (minioClient == null) {
try {
minioClient = MinioClient.builder()
.endpoint(minioUrl, 443, true)// 这里配置使用https协议的
.credentials(minioName, minioPass)
.build();
// FIXME 配置是否忽略掉证书检查
// minioClient.ignoreCertCheck();// 如果有证书,过期了可以开启,正常使用不推荐 by junwei
} catch (Exception e) {
log.error("minioClient异常", e);
}
}
return minioClient;
}
上面代码是参考,获取minioClient
客户端需要用ssl访问
此时,就可以上传文件到minio文件服务器啦
开启了ssl后,还需要将证书放到Minio的配置目录下,我这里是这样的:
[root@ethings certs]# pwd
/data/minio/config/certs
[root@ethings certs]# ls
CAs private.key public.crt
上面private.key
和 public.crt
这两个文件也是nginx配置时的ssl证书文件,Minio中
在certs目录中,私钥必须命名private.key
,公钥必须命名public.crt
重启Minio配置完成https访问,现在就可以用https访问文件了。
注意: 重启minio,如果提示:
RROR Unable to load the TLS configuration: Missing TLS password
> Please set the password to environment variable `MINIO_CERT_PASSWD` so that the private key can be decrypted
这是因为生成证书的时候设置了密码:使用受密码保护的私钥时,必须MINIO_CERT_PASSWD使用以下命令通过环境变量提供密码:export MINIO_CERT_PASSWD=
需要使用 mc命令设置
./mc config host add minio http://172.12.3.1:9999 username password //添加minio server
./mc policy set download minio/yourbucket //设置需要开放下载的bucket, 注意需要带minio
补充一个docker-compose启动方式的 docker-compose.yml:
version: '3'
services:
minio:
image: minio/minio
command: server --address "open.abc.com:9000" --console-address ":9009" /data
ports:
- "9000:9000"
- "9009:9009"
extra_hosts:
- "dns_1:172.17.0.1"
environment:
MINIO_ACCESS_KEY: "username"
MINIO_SECRET_KEY: "password"
volumes:
- /datas/minio/data:/data
- /datas/minio/config:/root/.minio
network_mode: host