启动脚本
#!/bin/bash
# 设置MinIO根路径(只需修改这里即可适应不同环境)
MINIO_ROOT="/home/minio"
# MinIO 配置(基于根路径自动生成其他路径)
MINIO_BIN="$MINIO_ROOT/minio"
MINIO_DATA_DIR="$MINIO_ROOT/data"
MINIO_LOG_DIR="$MINIO_ROOT/log"
MINIO_LOG_FILE="$MINIO_LOG_DIR/minio.log"
MINIO_ADDRESS=":9000"
MINIO_CONSOLE_ADDRESS=":9001"
MINIO_ROOT_USER="admin"
MINIO_ROOT_PASSWORD="123456"
# 检查 minio 组是否存在,不存在则创建
if ! getent group minio >/dev/null; then
echo "[INFO] minio 组不存在,正在创建..."
sudo groupadd minio
fi
# 检查 minio 用户是否存在,不存在则创建,并加入 minio 组
if ! id minio >/dev/null 2>&1; then
echo "[INFO] minio 用户不存在,正在创建..."
sudo useradd -r -g minio -s /sbin/nologin minio
fi
# 检查并创建必要的目录
for dir in "$MINIO_DATA_DIR" "$MINIO_LOG_DIR"; do
if [ ! -d "$dir" ]; then
echo "[INFO] 目录 $dir 不存在,正在创建..."
mkdir -p "$dir"
fi
# 不再输出已存在目录日志
# 不再单独 chown 子目录
# sudo chown -R minio:minio "$dir"
done
# 仅在需要赋权时输出日志
if [ "$(stat -c '%U:%G' "$MINIO_ROOT")" != "minio:minio" ]; then
echo "[INFO] 正在递归赋予 $MINIO_ROOT 及其所有内容归属权给 minio:minio..."
sudo chown -R minio:minio "$MINIO_ROOT"
echo "[INFO] 赋权完成"
fi
# 检查 MinIO 二进制是否存在
if [ ! -f "$MINIO_BIN" ]; then
echo "[ERROR] MinIO 二进制文件不存在 ($MINIO_BIN)"
exit 1
fi
# 仅在需要设置可执行权限时输出日志
if [ ! -x "$MINIO_BIN" ]; then
chmod +x "$MINIO_BIN"
echo "[INFO] 已设置 $MINIO_BIN 可执行权限"
fi
# 检查并放行 MinIO 所需端口(9000 和 9001),适配 UFW
if ! sudo ufw status | grep -qw inactive; then
for port in 9000 9001; do
if ! sudo ufw status | grep -qw "$port"; then
echo "[INFO] 端口 $port 未放行,正在放行..."
sudo ufw allow $port
fi
done
fi
# 以 minio 用户身份启动 MinIO(使用 nohup 防止终端关闭后退出)
echo "[INFO] 正在以 minio 用户身份启动 MinIO..."
sudo -u minio nohup env \
MINIO_ROOT_USER="$MINIO_ROOT_USER" \
MINIO_ROOT_PASSWORD="$MINIO_ROOT_PASSWORD" \
"$MINIO_BIN" server "$MINIO_DATA_DIR" \
--address "$MINIO_ADDRESS" \
--console-address "$MINIO_CONSOLE_ADDRESS" \
> "$MINIO_LOG_FILE" 2>&1 &
echo "[INFO] MinIO 启动命令已执行,日志输出到 $MINIO_LOG_FILE"
# 检查是否启动成功
sleep 2 # 等待进程启动
# 获取本机IP地址(首个非回环IPv4)
LOCAL_IP=$(hostname -I | awk '{print $1}')
if pgrep -f "minio server" > /dev/null; then
echo "✅ MinIO 已启动:"
echo " - 访问地址: http://$LOCAL_IP:9000"
echo " - 控制台地址: http://$LOCAL_IP:9001"
echo " - 数据目录: $MINIO_DATA_DIR"
echo " - 日志文件: $MINIO_LOG_FILE"
else
echo "❌ MinIO 启动失败,请检查日志: $MINIO_LOG_FILE"
exit 1
fi
停止脚本
#!/bin/bash
echo "[INFO] 正在查找 minio 用户下的 MinIO 进程..."
# 查找 minio 用户下的 minio server 进程
MINIO_PIDS=$(pgrep -u minio -f "minio server")
if [ -z "$MINIO_PIDS" ]; then
echo "[INFO] 未找到正在运行的 MinIO 进程。"
exit 0
fi
echo "[INFO] 找到以下 MinIO 进程: $MINIO_PIDS"
echo "[INFO] 正在尝试停止..."
# 发送 SIGTERM
sudo kill $MINIO_PIDS
sleep 2
# 检查是否已停止
if pgrep -u minio -f "minio server" > /dev/null; then
echo "[WARN] MinIO 进程未能正常停止,尝试强制杀死..."
sudo kill -9 $MINIO_PIDS
else
echo "[INFO] MinIO 已成功停止。"
fi
2635

被折叠的 条评论
为什么被折叠?



