自建MinIO对象存储并设置开机自启
前言:之前搭了个图床一直使用的FTP,FTP是20多年的老协议导致传输速度特别慢。minio对象存储系统很好的解决了这个问题。举个例子,FTP远程传输一张图片需要3秒,而minio一秒都不到基本上秒传输
搭建MinIO
我这里使用的宝塔面板(aapanel)
在/www
目录下创建一个名为minio
的文件夹,进入minio文件夹,在minio里面再创建2个文件夹,分别i
与tmp
(如下图)
进入/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=wwwwww
表示的是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配置完成,你会得到一些东西
区域:未设置(默认值:auto)
存储桶:moe
key秘钥:你保存的
对接地址:http://ip:9199
访问域名:刚刚反代的
MiniIO存储的所有文件在/www/minio/i
目录下
最后,有时候对接对象存储失败是某些程序本身存在问题。举个例子:chevereto图床我第一次能对接成功,之后无论如何都报错。最后的解决办法是进入图床的数据库把这个存储模块完全删了再重新对接才得以解决!
速度还可以啊