自动配置MinIO对象存储的脚本

wen 实用脚本 5

本文目录导读:

自动配置MinIO对象存储的脚本

  1. MinIO自动配置脚本
  2. 使用方法
  3. 脚本功能说明
  4. 验证安装

MinIO自动配置脚本

#!/bin/bash
# ============================================
# MinIO 自动配置脚本
# 支持 Linux (amd64/arm64) 和 macOS
# ============================================
set -e
# ----- 配置参数 -----
MINIO_VERSION="latest"  # 或指定版本如 "RELEASE.2024-01-13T07-53-03Z"
MINIO_ROOT_USER="admin"
MINIO_ROOT_PASSWORD="minio12345"
MINIO_VOLUME="/data/minio"
MINIO_PORT=9000
MINIO_CONSOLE_PORT=9001
# 自动检测架构
ARCH=$(uname -m)
OS=$(uname -s | tr '[:upper:]' '[:lower:]')
case "$ARCH" in
    x86_64)  ARCH="amd64" ;;
    aarch64) ARCH="arm64" ;;
    armv7l)  ARCH="arm" ;;
    *) echo "不支持的架构: $ARCH"; exit 1 ;;
esac
echo "✅ 检测系统: $OS/$ARCH"
# ----- 1. 安装 MinIO -----
install_minio() {
    echo "📥 正在下载 MinIO..."
    if [ "$MINIO_VERSION" = "latest" ]; then
        DOWNLOAD_URL="https://dl.min.io/server/minio/release/${OS}-${ARCH}/minio"
    else
        DOWNLOAD_URL="https://dl.min.io/server/minio/release/${OS}-${ARCH}/archive/minio.${MINIO_VERSION}"
    fi
    # 下载 MinIO 二进制文件
    wget -q "$DOWNLOAD_URL" -O /tmp/minio || curl -sL "$DOWNLOAD_URL" -o /tmp/minio
    if [ ! -f /tmp/minio ]; then
        echo "❌ 下载失败,请检查网络连接"
        exit 1
    fi
    # 安装到系统路径
    sudo mv /tmp/minio /usr/local/bin/minio
    sudo chmod +x /usr/local/bin/minio
    echo "✅ MinIO 已安装: $(minio --version)"
}
# ----- 2. 创建数据和配置目录 -----
setup_directories() {
    echo "📁 创建数据和配置目录..."
    sudo mkdir -p "$MINIO_VOLUME"
    sudo mkdir -p /etc/minio
    sudo mkdir -p /var/log/minio
    # 创建运行用户(如果不存在)
    if ! id -u minio-user &>/dev/null; then
        sudo useradd -r -s /sbin/nologin -M minio-user
    fi
    sudo chown -R minio-user:minio-user "$MINIO_VOLUME" /etc/minio /var/log/minio
    echo "✅ 目录创建完成"
}
# ----- 3. 配置环境变量 -----
configure_env() {
    echo "🔧 配置 MinIO 环境变量..."
    sudo tee /etc/default/minio > /dev/null <<EOF
# MinIO 配置文件
MINIO_ROOT_USER=${MINIO_ROOT_USER}
MINIO_ROOT_PASSWORD=${MINIO_ROOT_PASSWORD}
MINIO_VOLUMES="${MINIO_VOLUME}"
MINIO_OPTS="--address :${MINIO_PORT} --console-address :${MINIO_CONSOLE_PORT}"
EOF
    sudo chown minio-user:minio-user /etc/default/minio
    echo "✅ 环境变量配置完成"
}
# ----- 4. 创建 systemd 服务(Linux)-----
create_systemd_service() {
    echo "🛠️ 创建 systemd 服务..."
    sudo tee /etc/systemd/system/minio.service > /dev/null <<EOF
[Unit]
Description=MinIO Object Storage
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target
[Service]
User=minio-user
Group=minio-user
EnvironmentFile=/etc/default/minio
ExecStart=/usr/local/bin/minio server \$MINIO_OPTS \$MINIO_VOLUMES
Restart=always
RestartSec=5
LimitNOFILE=65536
StandardOutput=append:/var/log/minio/minio.log
StandardError=append:/var/log/minio/minio.log
[Install]
WantedBy=multi-user.target
EOF
    sudo systemctl daemon-reload
    sudo systemctl enable minio
    echo "✅ systemd 服务创建完成"
}
# ----- 5. 启动 MinIO 服务 -----
start_minio() {
    echo "🚀 启动 MinIO 服务..."
    if [ "$OS" = "linux" ]; then
        sudo systemctl start minio
        sleep 3
        if systemctl is-active --quiet minio; then
            echo "✅ MinIO 服务已启动"
            echo "📊 管理控制台: http://localhost:${MINIO_CONSOLE_PORT}"
            echo "📦 API 端点: http://localhost:${MINIO_PORT}"
        else
            echo "❌ 服务启动失败,查看日志: sudo journalctl -u minio -f"
            exit 1
        fi
    elif [ "$OS" = "darwin" ]; then
        # macOS 后台运行
        export MINIO_ROOT_USER MINIO_ROOT_PASSWORD
        nohup minio server "$MINIO_VOLUME" \
            --address ":$MINIO_PORT" \
            --console-address ":$MINIO_CONSOLE_PORT" \
            > /var/log/minio/minio.log 2>&1 &
        echo $! > /tmp/minio.pid
        sleep 2
        echo "✅ MinIO 已在后台启动 (PID: $(cat /tmp/minio.pid))"
    fi
}
# ----- 6. 创建访问密钥和存储桶 -----
configure_minio_client() {
    echo "🔑 配置 MinIO 客户端..."
    # 安装 mc 客户端
    MC_URL="https://dl.min.io/client/mc/release/${OS}-${ARCH}/mc"
    wget -q "$MC_URL" -O /tmp/mc || curl -sL "$MC_URL" -o /tmp/mc
    sudo mv /tmp/mc /usr/local/bin/mc
    sudo chmod +x /usr/local/bin/mc
    # 配置别名
    mc alias set local http://localhost:${MINIO_PORT} \
        ${MINIO_ROOT_USER} ${MINIO_ROOT_PASSWORD} \
        --api s3v4
    # 创建存储桶
    BUCKET_NAME="my-bucket"
    if ! mc ls local/${BUCKET_NAME} &>/dev/null; then
        mc mb local/${BUCKET_NAME}
        echo "✅ 存储桶 '${BUCKET_NAME}' 创建成功"
    else
        echo "ℹ️ 存储桶 '${BUCKET_NAME}' 已存在"
    fi
    # 设置存储桶为公共只读(可选)
    # mc anonymous set download local/${BUCKET_NAME}
    # 生成访问密钥(可选)
    ACCESS_KEY=$(mc admin user svcacct add local ${MINIO_ROOT_USER} --access-key "myaccesskey" --secret-key "mysecretkey" 2>/dev/null || echo "已存在")
    echo "🔑 服务账户密钥已配置"
}
# ----- 7. 验证配置 -----
verify_setup() {
    echo "🧪 验证 MinIO 配置..."
    # 测试健康检查
    HEALTH=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:${MINIO_PORT}/minio/health/live)
    if [ "$HEALTH" = "200" ]; then
        echo "✅ 健康检查通过"
    else
        echo "❌ 健康检查失败"
        exit 1
    fi
    # 显示配置信息
    echo ""
    echo "========================================"
    echo " MinIO 配置完成!"
    echo "========================================"
    echo "管理控制台: http://localhost:${MINIO_CONSOLE_PORT}"
    echo "API 端点:   http://localhost:${MINIO_PORT}"
    echo "用户名:     ${MINIO_ROOT_USER}"
    echo "密码:       ${MINIO_ROOT_PASSWORD}"
    echo "存储桶:     my-bucket"
    echo "数据目录:   ${MINIO_VOLUME}"
    echo ""
    echo "常用命令:"
    echo "  sudo systemctl status minio   # 查看状态"
    echo "  sudo systemctl restart minio  # 重启服务"
    echo "  mc ls local/                  # 列出存储桶"
    echo "========================================"
}
# ----- 主流程 -----
main() {
    echo "========================================"
    echo " MinIO 自动配置脚本 v1.0"
    echo "========================================"
    # 检查是否为 root 或 sudo 权限
    if [ "$EUID" -ne 0 ] && [ "$OS" = "linux" ]; then
        echo "⚠️  请以 root 用户或使用 sudo 运行此脚本"
        exit 1
    fi
    install_minio
    setup_directories
    configure_env
    if [ "$OS" = "linux" ]; then
        create_systemd_service
    fi
    start_minio
    configure_minio_client
    verify_setup
}
main

使用方法

下载脚本

wget https://your-server/configure-minio.sh
chmod +x configure-minio.sh

运行脚本(需要root权限)

sudo ./configure-minio.sh

自定义配置

编辑脚本开头的配置参数:

MINIO_ROOT_USER="your-admin"      # 管理员用户名
MINIO_ROOT_PASSWORD="your-pass"    # 管理员密码(至少8位)
MINIO_VOLUME="/data/minio"        # 数据存储目录
MINIO_PORT=9000                    # API端口
MINIO_CONSOLE_PORT=9001           # Web管理端口

使用环境变量覆盖

export MINIO_ROOT_PASSWORD="new-password"
sudo ./configure-minio.sh

脚本功能说明

功能 说明
✅ 自动检测架构 支持 x86_64/arm64/arm
✅ 自动安装 下载最新或指定版本
✅ 创建用户 创建专用运行用户
✅ 配置服务 systemd守护进程
✅ 自动启动 开机自启
✅ 创建存储桶 自动创建示例存储桶
✅ 配置客户端 安装并配置mc命令行工具
✅ 健康检查 验证服务正常运行

验证安装

# 查看服务状态
sudo systemctl status minio
# 查看日志
sudo journalctl -u minio -f
# 使用mc客户端
mc ls local/
mc cp test.txt local/my-bucket/

这个脚本提供了完整的MinIO自动化部署方案,适合开发环境和生产环境快速部署。

抱歉,评论功能暂时关闭!