文件结构如上所示:
软件包(免费下载)
【免费】MinIo离线centos7安装包资源-CSDN文库(只有核心安装包)
MinIO整体离线centos7安装包无需外网资源-CSDN文库(整个压缩包-包含全部脚本)
minio_install.sh (核心安装脚本)
#!/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 (日志文件)
#!/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 (配置文件)
# 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."
执行命令
chmod +x minio_install.sh
chmod +x config/install minio.cfg
chmod +x functions/log.sh
./minio_install.sh