MinIO部署

MinIO 部署

最近在考虑使用 Ant Design Pro + egg.js 重构一下之前两个晚上赶出来的作业提交系统,本来准备直接存在服务端,但看到 ATSAST 用了 MinIO 作为存储容器,在和负责后端的夏老板交流之后发现调 MinIO 现成的 api 应该会比自己手写方便,正好手头上空着一台白嫖的 1 核 1G 的弱鸡 Azure 服务器,便决定部署为 MinIO 专用服务器(专用的原因是它也就部署个 MinIO 了,我又让他跑了一个 React 预览就爆炸了 :sweat_smile: )

配置

  1. 下载 MinIO 并添加运行权限(在 此页面 选择对应系统的安装链接 )

    wget https://dl.min.io/server/minio/release/linux-amd64/minio
    chmod +x minio
    
  2. 创建启动脚本

    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 目录。

  3. 配置系统服务

    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
    
  4. 给服务和启动脚本添加权限

    chmod +x /path/to/run-minio.sh
    chmod +x /usr/lib/systemd/system/minio.service
    
  5. 重启 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