#!/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