191 lines
4.2 KiB
Bash
191 lines
4.2 KiB
Bash
#!/bin/bash
|
|
# =============================================================================
|
|
# MinIO Nginx 配置安装脚本
|
|
# =============================================================================
|
|
#
|
|
# 功能:
|
|
# - 安装 MinIO Nginx 反向代理配置
|
|
# - 配置 SSL 证书 (可选)
|
|
# - 创建缓存目录
|
|
#
|
|
# 用法:
|
|
# ./install.sh # 安装配置
|
|
# ./install.sh --ssl # 安装配置并配置 SSL
|
|
# ./install.sh --uninstall # 卸载配置
|
|
#
|
|
# =============================================================================
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
NGINX_AVAILABLE="/etc/nginx/sites-available"
|
|
NGINX_ENABLED="/etc/nginx/sites-enabled"
|
|
CONFIG_FILE="minio.szaiai.com.conf"
|
|
|
|
# 颜色定义
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m'
|
|
|
|
log_info() {
|
|
echo -e "${BLUE}[INFO]${NC} $1"
|
|
}
|
|
|
|
log_success() {
|
|
echo -e "${GREEN}[SUCCESS]${NC} $1"
|
|
}
|
|
|
|
log_warning() {
|
|
echo -e "${YELLOW}[WARNING]${NC} $1"
|
|
}
|
|
|
|
log_error() {
|
|
echo -e "${RED}[ERROR]${NC} $1"
|
|
}
|
|
|
|
# 检查 root 权限
|
|
check_root() {
|
|
if [ "$EUID" -ne 0 ]; then
|
|
log_error "请使用 root 权限运行此脚本"
|
|
echo "用法: sudo $0"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
# 安装配置
|
|
install_config() {
|
|
check_root
|
|
|
|
log_info "安装 MinIO Nginx 配置..."
|
|
|
|
# 检查 Nginx 是否安装
|
|
if ! command -v nginx &> /dev/null; then
|
|
log_error "Nginx 未安装,请先安装 Nginx"
|
|
exit 1
|
|
fi
|
|
|
|
# 创建缓存目录
|
|
log_info "创建缓存目录..."
|
|
mkdir -p /var/cache/nginx/minio
|
|
chown -R www-data:www-data /var/cache/nginx/minio
|
|
|
|
# 复制配置文件
|
|
log_info "复制配置文件..."
|
|
cp "$SCRIPT_DIR/$CONFIG_FILE" "$NGINX_AVAILABLE/"
|
|
|
|
# 创建符号链接
|
|
if [ -L "$NGINX_ENABLED/$CONFIG_FILE" ]; then
|
|
log_warning "配置已存在,正在更新..."
|
|
rm "$NGINX_ENABLED/$CONFIG_FILE"
|
|
fi
|
|
ln -s "$NGINX_AVAILABLE/$CONFIG_FILE" "$NGINX_ENABLED/"
|
|
|
|
# 测试配置
|
|
log_info "测试 Nginx 配置..."
|
|
if nginx -t; then
|
|
log_success "配置测试通过"
|
|
else
|
|
log_error "配置测试失败,请检查配置文件"
|
|
exit 1
|
|
fi
|
|
|
|
# 重新加载 Nginx
|
|
log_info "重新加载 Nginx..."
|
|
systemctl reload nginx
|
|
|
|
log_success "MinIO Nginx 配置安装完成!"
|
|
echo ""
|
|
echo "下一步:"
|
|
echo " 1. 确保 DNS 已配置指向此服务器"
|
|
echo " 2. 运行 ./install.sh --ssl 配置 SSL 证书"
|
|
echo ""
|
|
}
|
|
|
|
# 配置 SSL
|
|
setup_ssl() {
|
|
check_root
|
|
|
|
log_info "配置 SSL 证书..."
|
|
|
|
# 检查 certbot
|
|
if ! command -v certbot &> /dev/null; then
|
|
log_info "安装 certbot..."
|
|
apt-get update
|
|
apt-get install -y certbot python3-certbot-nginx
|
|
fi
|
|
|
|
log_info "获取 SSL 证书..."
|
|
certbot --nginx \
|
|
-d minio.szaiai.com \
|
|
-d console.minio.szaiai.com \
|
|
-d cdn.szaiai.com \
|
|
--non-interactive \
|
|
--agree-tos \
|
|
--email admin@szaiai.com \
|
|
--redirect
|
|
|
|
log_success "SSL 证书配置完成!"
|
|
}
|
|
|
|
# 卸载配置
|
|
uninstall_config() {
|
|
check_root
|
|
|
|
log_info "卸载 MinIO Nginx 配置..."
|
|
|
|
# 删除符号链接
|
|
if [ -L "$NGINX_ENABLED/$CONFIG_FILE" ]; then
|
|
rm "$NGINX_ENABLED/$CONFIG_FILE"
|
|
log_info "已删除启用的配置"
|
|
fi
|
|
|
|
# 删除配置文件
|
|
if [ -f "$NGINX_AVAILABLE/$CONFIG_FILE" ]; then
|
|
rm "$NGINX_AVAILABLE/$CONFIG_FILE"
|
|
log_info "已删除配置文件"
|
|
fi
|
|
|
|
# 重新加载 Nginx
|
|
systemctl reload nginx
|
|
|
|
log_success "MinIO Nginx 配置已卸载"
|
|
}
|
|
|
|
# 显示帮助
|
|
show_help() {
|
|
echo ""
|
|
echo "MinIO Nginx 配置安装脚本"
|
|
echo ""
|
|
echo "用法: $0 [选项]"
|
|
echo ""
|
|
echo "选项:"
|
|
echo " (无参数) 安装 Nginx 配置"
|
|
echo " --ssl 配置 SSL 证书 (需要先安装配置)"
|
|
echo " --uninstall 卸载配置"
|
|
echo " --help 显示帮助"
|
|
echo ""
|
|
}
|
|
|
|
# 主入口
|
|
case "${1:-}" in
|
|
--ssl)
|
|
setup_ssl
|
|
;;
|
|
--uninstall)
|
|
uninstall_config
|
|
;;
|
|
--help|-h)
|
|
show_help
|
|
;;
|
|
"")
|
|
install_config
|
|
;;
|
|
*)
|
|
log_error "未知选项: $1"
|
|
show_help
|
|
exit 1
|
|
;;
|
|
esac
|