关于配置Minio的一点小问题
Minio是个分布式对象存储器,一般搭配NGINX做负载均衡当个图片存储,小文件存储啥的,然后建立连接,确定桶的名字,再根据对象名字取出对象,或者存入对象,有时候还会搭配es什么的存下路径啥的。
今天在linux上配置minio服务,应该是个挺简单的事情,直接
minio serve -C [配置目录] --address[端口] [数据目录]
不过一般不能这么用
写一个start.sh吧。
#start.sh
#!/bin/bash
export MINIO_ACCESS_KEY=xxx
export MINIO_SECRET_KEY=xxx
nohup ./minio server --address :9000 --config-dir ./conf ./data > ./minio.log 2>&1 & (--config-dir 一般可以用-C表示)
写了start.sh当然也要写stop.sh吧,可是minio是没有stop命令的,如果用docker或者它的那个mc的客户端就好用多了。
#stop.sh
kill `netstat -nlp | grep :9000 | awk '{print $7}' | awk -F"/" '{ print $1 }'`
这段命令是我抄的,思路大致是找到pid然后杀掉,这个awk ‘{print $7}’ 会找到一个类似 [pid]/minio 形式的串,awk -F"/" '{ print $1 } 就是根据“/”分割取出pid了。但是还是感觉太low了,每次启动关闭服务都要什么whereis 然后cd啥的
于是试了下使用服务形式的minio.service,一般来说有两种,一种是基于init.d文件的加入服务,一种是基于systemd的服务注册,这里采用了第二种。
直接将一个名为minio.service的unit文件丢到/etc/systemd/system/里去
[Unit]
Description=MinIO #名称
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target #配置运行文件地址
AssertFileIsExecutable=/data/minio/minio
[Service]
User=root
Group=root
EnvironmentFile=-/data/minio/conf/minio.conf #指定配置文件
ExecStart=$PATH/minio server $MINIO_OPTS $MINIO_VOLUMES #按照配置文件方式指定运行
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
# Let systemd restart this service always
Restart=always
# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=65536
# Disable timeout logic and wait until process is stopped
TimeoutStopSec=infinity
SendSIGKILL=no
[Install]
WantedBy=multi-user.target
详细的说明可以看这篇unit文件格式说明 ,具体配置时注意删除注释。
然后systemctl daemon-reload ,systemctl start minio.service balabal… 然后有一个很奇怪的问题,那就是这个environmentFile怎么都加载不出来,一直报什么failed to run ‘start’ task: No such file or directory 什么的,后来发现给environmentFile加了一个"-“符号就好了,这个”-"符号什么意思,百度了一下,具体含义有以下
这里的含义估计是上一次工作目录,上一次工作目录什么意思?我这里写的难道不是绝对路径吗?总之很奇怪,然而搜了下stackflow,发现还是国外老哥给力
意思是说这在systemd.exec中有提及,如果“-”指向的文件不存在就不会去读这个文件,也不会报错,那么我的问题出在哪里呢
仔细检查后发现有个语句后面注释没有去掉,可以说是千里之堤毁于蚁穴了。
有关systemd的官方文档地址这里可以找到。