自建MinIO对象存储并设置开机自启

前言:之前搭了个图床一直使用的FTP,FTP是20多年的老协议导致传输速度特别慢。minio对象存储系统很好的解决了这个问题。举个例子,FTP远程传输一张图片需要3秒,而minio一秒都不到基本上秒传输

搭建MinIO

我这里使用的宝塔面板(aapanel)

/www目录下创建一个名为minio的文件夹,进入minio文件夹,在minio里面再创建2个文件夹,分别itmp(如下图)

进入/www/minio/i目录,在该目录下下载minio文件

AMD系统:minio

ARM系统:minio(例如甲骨文ARM机子)

将下载下来的minio文件权限改为755+root(如下图)

进入/www/minio/tmp目录,在该目录下创建一个名为minio的文件,并将权限设置为755+root(参照↑图),然后写入如下内容

# Volume to be used for MinIO server.
MINIO_VOLUMES="/www/minio/i"
# Use if you want to run MinIO on a custom port.
MINIO_OPTS="--address :9199 --console-address :9001"
# Root user for the server.
MINIO_ROOT_USER=根用户名
# Root secret for the server.
MINIO_ROOT_PASSWORD=根密码

# set this for MinIO to reload entries with 'mc admin service restart'
MINIO_CONFIG_ENV_FILE=/www/minio/tmp/minio

上面代码解释:

  • 9199表示MinIO存储桶文件读写端口(可自定义端口,防火墙记得放行端口)
  • 9001表示MinIO面板登陆端口(可自定义端口,防火墙记得放行端口)
  • 根用户名,随意写,最少3个字符
  • 根密码,随意写,最少8个字符

进入/etc/systemd/system目录,在该目录下创建一个名为minio.service的文件,并将权限设置为644+root,然后写入如下内容

[Unit]
Description=MinIO
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/www/minio/i/minio

[Service]
WorkingDirectory=/www/minio/

User=www
Group=www
ProtectProc=invisible

EnvironmentFile=/www/minio/tmp/minio
ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /www/minio/tmp/minio\"; exit 1; fi"
ExecStart=/www/minio/i/minio server $MINIO_OPTS $MINIO_VOLUMES

# Let systemd restart this service always
Restart=always

# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=1048576

# Specifies the maximum number of threads this process can create
TasksMax=infinity

# Disable timeout logic and wait until process is stopped
TimeoutStopSec=infinity
SendSIGKILL=no

[Install]
WantedBy=multi-user.target

# Built for ${project.name}-${project.version} (${project.name})

上面代码解释:
User=www
Group=www
www表示的是linux系统的一个用户,因为用的宝塔,宝塔自动创建了www用户。如果没用宝塔你需要手动创建一个用户

设为开机自启

systemctl enable minio.service

启动minio

systemctl start minio.service

现在可以在浏览器登录面板了

  • 地址:http://ip:9001
  • 账户:根用户名+根密码(↑上面你设置的)

其他常用命令

停止

systemctl stop minio.service

重启

systemctl restart minio.service

取消开机自启

systemctl disable minio.service

MinIO配置

点击Create Bucket创建一个存储桶

输入存储桶名字(最少3个字符)

点击存储桶里右上角的齿轮设置按钮

点击Access Policy

选择第2个Public

点击面板左侧Users切换到用户管理页面

点击右上角Create User创建一个用户

创建用户以及分配权限

  • User name:随意写,不能与根用户名同名
  • Password:随意写,最少8个字符
  • Select Policy:选择readwrite
  • 最后点击Sacve创建用户

点击刚刚创建的用户进入到该用户的配置,点击Service Accounts再点击Create Access Key

为用户创建一个Key秘钥,保持默认继续就行

最后保存好Key秘钥

绑定域名

宝塔创建一个网站,然后反代MinIO,2种反代情况
1,反代目标:http://ip:9199

得到域名格式:http://域名.com/moe/
后面的moe是存储桶名字

2,反代目标:http://ip:9199/moe/

得到域名格式:http://域名.com/
这种方法就不会在URL上显示存储桶名字(推荐)

这只是利用宝塔默认的反代配置,如果你想获得最佳的性能请参考minio官方给出的Nginx配置

至此,MinIO配置完成,你会得到一些东西

区域:未设置(默认值:auto)
存储桶:moe
key秘钥:你保存的
对接地址:http://ip:9199
访问域名:刚刚反代的

MiniIO存储的所有文件在/www/minio/i目录下

最后,有时候对接对象存储失败是某些程序本身存在问题。举个例子:chevereto图床我第一次能对接成功,之后无论如何都报错。最后的解决办法是进入图床的数据库把这个存储模块完全删了再重新对接才得以解决!


评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注