MinIO centos 7 离线(内网) 一键部署安装

文件结构如上所示:

软件包(免费下载)

【免费】MinIo离线centos7安装包资源-CSDN文库(只有核心安装包)

MinIO整体离线centos7安装包无需外网资源-CSDN文库(整个压缩包-包含全部脚本)

minio_install.sh (核心安装脚本)

bash 复制代码
#!/bin/bash
sleep 1
source ./config/install_minio.cfg
LOG_FILE="$1"
source ./functions/log.sh
log_and_print ""
log_and_print "开始安装MinIO..."

# 安装函数
install_minio() {
    log_and_print "安装MinIO RPM包..."
    
    # 检查安装包是否存在
    if [ ! -f "${MINIO_RPM_PATH}" ]; then
        log_and_print "错误: MinIO安装包不存在: ${MINIO_RPM_PATH}"
        exit 1
    fi
    
    # 安装RPM包
    rpm -ivh ${MINIO_RPM_PATH}
    
    # 检查安装是否成功
    if [ $? -ne 0 ]; then
        log_and_print "错误: MinIO安装失败"
        exit 1
    fi
    
    log_and_print "MinIO RPM包安装成功"
}

# 配置函数
configure_minio() {
    log_and_print "配置MinIO服务..."
    
    # 创建必要目录
    mkdir -p ${MINIO_DATA_DIR} ${MINIO_CONFIG_DIR} ${MINIO_LOG_DIR}
    
    # 创建minio用户
    if ! id minio &>/dev/null; then
        useradd -r -s /sbin/nologin minio
    fi
    
    # 设置目录权限
    chown -R minio:minio ${MINIO_DATA_DIR} ${MINIO_CONFIG_DIR} ${MINIO_LOG_DIR}
    chmod 755 ${MINIO_DATA_DIR} ${MINIO_CONFIG_DIR} ${MINIO_LOG_DIR}

    # 创建环境配置文件
    cat > /etc/default/minio <<EOF
MINIO_ROOT_USER=${MINIO_ROOT_USER}
MINIO_ROOT_PASSWORD=${MINIO_ROOT_PASSWORD}
MINIO_VOLUMES="${MINIO_DATA_DIR}"
MINIO_OPTS="--console-address :${MINIO_CONSOLE_PORT} --address :${MINIO_PORT}"
MINIO_LOG_DIR="${MINIO_LOG_DIR}"
EOF

    # 创建systemd服务文件
    cat > /etc/systemd/system/minio.service <<EOF
[Unit]
Description=MinIO Object Storage Server
After=network.target
[Service]
User=minio
Group=minio
EnvironmentFile=/etc/default/minio
ExecStart=/usr/local/bin/minio server \$MINIO_OPTS \$MINIO_VOLUMES
ExecStop=/bin/kill -s SIGTERM \$MAINPID
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF

    log_and_print "MinIO服务配置完成"
}

# 启动函数
start_minio() {
    log_and_print "启动MinIO服务..."
    systemctl daemon-reload
    systemctl enable --now minio
    systemctl status minio --no-pager
}

# 主执行流程
install_minio
configure_minio
start_minio
log_and_print "MinIO安装完成..."

functions/log.sh (日志文件)

bash 复制代码
#!/bin/bash

# 日志函数库 - 用于统一管理脚本日志输出

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
NC='\033[0m' # No Color

# 检查全局变量LOG_FILE是否已设置
[ -z "$LOG_FILE" ] && LOG_FILE="/var/log/install_$(date +%Y%m%d).log"

# 创建日志目录(如果不存在)
mkdir -p "$(dirname "$LOG_FILE")"
touch "$LOG_FILE"

# 日志记录函数
log_and_print() {
    local message="$1"
    local timestamp=$(date "+%Y-%m-%d %H:%M:%S")
    
    # 输出到屏幕(带颜色)
    if [[ "$message" =~ "错误" ]]; then
        echo -e "${RED}[$timestamp] $message${NC}"
    elif [[ "$message" =~ "完成" || "$message" =~ "成功" ]]; then
        echo -e "${GREEN}[$timestamp] $message${NC}"
    elif [[ "$message" =~ "警告" ]]; then
        echo -e "${YELLOW}[$timestamp] $message${NC}"
    else
        echo "[$timestamp] $message"
    fi
    
    # 写入日志文件(无颜色)
    echo "[$timestamp] $message" >> "$LOG_FILE"
}

# 命令执行日志记录
run_cmd() {
    local cmd="$@"
    log_and_print "执行命令: $cmd"
    
    # 执行命令并捕获输出
    output=$($cmd 2>&1)
    local status=$?
    
    # 记录输出和状态
    [ -n "$output" ] && log_and_print "命令输出: $output"
    [ $status -ne 0 ] && log_and_print "错误: 命令返回非零状态 $status"
    
    return $status
}

# 错误检查函数
check_error() {
    local status=$1
    local message="$2"
    
    if [ $status -ne 0 ]; then
        log_and_print "错误: $message"
        exit $status
    fi
}

config/install_minio.cfg (配置文件)

bash 复制代码
# MinIO RPM包路径
MINIO_RPM_PATH="./minio-20250524170830.0.0-1.x86_64.rpm"

# 数据存储配置
MINIO_DATA_DIR="/data/minio"
MINIO_CONFIG_DIR="/etc/minio"
MINIO_LOG_DIR="/var/log/minio"

# 网络端口
MINIO_PORT=9000
MINIO_CONSOLE_PORT=9001

# 管理员凭据
MINIO_ROOT_USER="admin"
MINIO_ROOT_PASSWORD="!Admin123."

执行命令

bash 复制代码
chmod +x minio_install.sh
chmod +x config/install minio.cfg
chmod +x functions/log.sh

./minio_install.sh
相关推荐
大模型真好玩23 分钟前
深入浅出LangChain AI Agent智能体开发教程(八)—LangChain接入MCP实现流程
人工智能·python·mcp
阿松のblog1 小时前
vue3+ts+flask+websocket实现实时异物检测
python·websocket·flask
TS的美梦4 小时前
scanpy单细胞转录组python教程(四):单样本数据分析之降维聚类及细胞注释
python·数据分析·聚类·单细胞转录组·scanpy
一涯5 小时前
用python写一个抓取股市关键词的程序
前端·python
真就死难6 小时前
适用于个人开发、中小型项目的Embedding方案(配合ChromaDB)
python·embedding·rag
yanxing.D6 小时前
OpenCV轻松入门_面向python(第三章图像运算)
人工智能·python·opencv
Ai财富密码7 小时前
Python 爬虫:Selenium 自动化控制(Headless 模式 / 无痕浏览)
爬虫·python·selenium
小五1278 小时前
数据科学与计算实例应用
开发语言·python
站大爷IP8 小时前
Python类型注解:让代码“开口说话”的隐形助手
python
站大爷IP9 小时前
Python多态实战:从基础到高阶的“魔法”应用指南
python