MinIo 是轻量的文件存储服务,兼容aws S3 服务接口。 就是可以使用亚马逊提供的存储接口来上传文件到minio。学校的一个项目要求连接局域网能正常使用,就考虑在本地搭建一个文件存储服务。
docker-compse.yml
version: '2.2'
services:
minio:
image: "quay.io/minio/minio:RELEASE.2022-08-02T23-59-16Z"
container_name: minio
privileged: true
restart: always
ports:
- "9006:9006"
- "9007:9007"
volumes:
- ./aa/data/:/data/
command: server --address ":9006" --console-address ":9007" /data
environment:
- MINIO_ROOT_USER=xx
- MINIO_ROOT_PASSWORD=IjudisjIUJId498eNINxx
network_mode: host
9006 是文件存储服务port,9007是web 管理界面服务port。可以先在/aa/data/
新建一个目录,即 bucket 的名字,如jxufe_minio,会被放到mimno 容器的/data/ 。访问http://127.0.0.1:9007 就可以进入存储服务的图形化界面,用户名和密码是 MINIO_ROOT_USER/MINIO_ROOT_PASSWORD 对应的值。
nginx
服务运行起来之后,可以验证一下。
curl http://127.0.0.1:9006
接下来可以配置nginx ,需要注意的是文件的上传和下载请求都是由minio 服务来响应的,因为我是把项目的web 服务和minio 配置在一起,当时想着文件的访问就由项目自己来处理,但这样nginx 就不好配置了。
location /jxufe_minio {
proxy_pass http://127.0.0.1:9006; // 代表 http://127.0.0.1:9006/jxufe_minio/.... 来process.....
proxy_redirect default;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}
用接口上传文件
直接用aws s3 提供的文件上传api,调用接时自己配的一些配置
'OSS_SETTING' => [
'type' => 'AWS_S3', //AWS_S3,还有其他oss
'id' => 'xx', //access_key 即MINIO_ROOT_USER
'key' => 'IjudisjIUJId498x', //secret_key 即MINIO_ROOT_PASSWORD
'host' => 'https://xx.xx.xx', //endpoint
'bucket' => 'jxufeminio', //bucket,为空放在根bucket下
"dir" => '', //bucket下的目录,比如:test/
'acl' => 'public-read', //上传后的权限控制
'max_size' => 50 * 1024 * 1024, // 用户上传文件大小限制
'callback_url' => '', // $callbackUrl
],
尝试分布式minio
分布式minio
其他问题
- bucket 不存在,/aa/data/ 新建一个目录,即 bucket 的名字,如jxufe_minio。也可以进入图形化界面新建
- 上传成功,但是无法访问。可能要进入9007 图形化界面,把该bucket 设置为public
参考文章
网友评论