MinIO 部署
最近在考虑使用 Ant Design Pro + egg.js 重构一下之前两个晚上赶出来的作业提交系统,本来准备直接存在服务端,但看到 ATSAST 用了 MinIO 作为存储容器,在和负责后端的夏老板交流之后发现调 MinIO 现成的 api 应该会比自己手写方便,正好手头上空着一台白嫖的 1 核 1G 的弱鸡 Azure 服务器,便决定部署为 MinIO 专用服务器(专用的原因是它也就部署个 MinIO 了,我又让他跑了一个 React 预览就爆炸了 :sweat_smile: )
配置
下载 MinIO 并添加运行权限(在 此页面 选择对应系统的安装链接 )
wget https://dl.min.io/server/minio/release/linux-amd64/minio chmod +x minio
创建启动脚本
vim /path/to/run-minio.sh
编辑以下内容:
#!/bin/bash export MINIO_ROOT_USER=管理员用户名 export MINIO_ROOT_PASSWORD=管理员密码 /path/to/minio server --console-address ":9001" /data
这样默认将 minio 的根目录设置为了
/data
目录。配置系统服务
vim /usr/lib/systemd/system/minio.service
编辑以下内容:
[Unit] Description=Minio service Documentation=https://docs.minio.io/ [Service] WorkingDirectory=/data ExecStart=/path/to/run-minio.sh Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target
给服务和启动脚本添加权限
chmod +x /path/to/run-minio.sh chmod +x /usr/lib/systemd/system/minio.service
重启 systemctl 并为服务添加开机自启
systemctl daemon-reload systemctl enable minio systemctl start minio
至此配置完毕,浏览器访问为 9001 端口,api 端口为 9000 端口。
使用
使用 nodejs 创建 /xjzsq/1.txt 文件的临时上传链接(presignedUrl),有效时间为 60 秒。
var Minio = require("minio");
var minioClient = new Minio.Client({
endPoint: "minioapi.d1.fan",
port: 443,
useSSL: true,
accessKey: '用户名',
secretKey: '密码'
});
minioClient.presignedPutObject('xjzsq', '1.txt', 60, function (err, presignedUrl) {
if (err) return console.log(err)
console.log(presignedUrl)
})
控制台得到的网址可以直接在 antd upload 组件中使用。
参考网页
Minio分布式集群搭建部署 - 吕振江 - 博客园 (cnblogs.com)
MinIO | The MinIO Quickstart Guide
MinIO Quickstart Guide| Minio中文文档
实战秘籍 - 使用pre-signed URLs通过浏览器上传 - 《Minio Cookbook 中文版》 - 书栈网 · BookStack