本文目录导读:

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自动化部署方案,适合开发环境和生产环境快速部署。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播