From 61866761bb8bfad3600cfd5e69d82d63207e9949 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=96=BB=E5=8B=87=E7=A5=A5?= <237899745@qq.com> Date: Mon, 24 Nov 2025 15:09:48 +0800 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20=E5=A2=9E=E5=BC=BAinstall.sh?= =?UTF-8?q?=E5=AF=B9=E5=AE=9D=E5=A1=94=E9=9D=A2=E6=9D=BF=E7=9A=84=E6=94=AF?= =?UTF-8?q?=E6=8C=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 新增功能: - 添加 ensure_nginx_installed() 函数,自动检测并安装 Nginx - 在所有 Nginx 配置函数中调用确保 Nginx 已安装 - restart_nginx_safe() 新增宝塔面板路径支持(/www/server/nginx/sbin/nginx) 改进点: - 优先尝试宝塔面板的 Nginx 路径 - 支持在更新/修复模式下自动安装缺失的 Nginx - 根据不同包管理器自动选择安装方式(apt/yum/dnf/zypper) - 增强错误提示和安装验证 兼容性: - 完全兼容宝塔面板环境 - 兼容标准 Linux 系统环境 - 支持多种发行版的包管理器 这些改进使脚本能在更多环境下自动化部署,提升用户体验。 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude --- install.sh | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/install.sh b/install.sh index 5a9fcda..2e058ee 100644 --- a/install.sh +++ b/install.sh @@ -2307,6 +2307,23 @@ restart_nginx_safe() { fi fi + # 宝塔路径优先尝试 + if [[ -x /www/server/nginx/sbin/nginx ]]; then + if /www/server/nginx/sbin/nginx -t 2>/dev/null; then + if /www/server/nginx/sbin/nginx -s reload 2>/dev/null; then + print_success "已通过宝塔 nginx -s reload 重载" + return 0 + fi + if /www/server/nginx/sbin/nginx 2>/dev/null; then + print_success "已通过宝塔 nginx 启动" + return 0 + fi + else + print_error "宝塔 Nginx 配置测试失败" + /www/server/nginx/sbin/nginx -t 2>&1 || true + fi + fi + # 直接使用nginx命令 if command -v nginx &> /dev/null; then if ! nginx -t 2>/dev/null; then @@ -2331,10 +2348,36 @@ restart_nginx_safe() { return 1 } +# 确保已安装Nginx(更新/修复模式下可能未安装) +ensure_nginx_installed() { + if command -v nginx &> /dev/null || [[ -x /www/server/nginx/sbin/nginx ]]; then + return 0 + fi + + print_step "未检测到 Nginx,开始安装..." + + case "$PKG_MANAGER" in + apt) install_nginx_apt ;; + yum) install_nginx_yum ;; + dnf) install_nginx_dnf ;; + zypper) install_nginx_zypper ;; + *) print_error "无法自动安装Nginx,请手动安装"; return 1 ;; + esac + + # 安装后再次检测 + if ! command -v nginx &> /dev/null && [[ ! -x /www/server/nginx/sbin/nginx ]]; then + print_error "Nginx安装失败,请手动安装" + return 1 + fi +} + # 步骤1: 先配置HTTP Nginx(为SSL证书验证做准备) configure_nginx_http_first() { print_step "配置基础HTTP Nginx(用于SSL证书验证)..." + # 确保已安装Nginx + ensure_nginx_installed || return 1 + # 总是先配置HTTP模式 local server_name="${DOMAIN:-_}" @@ -2634,6 +2677,9 @@ configure_nginx() { configure_nginx_http() { local server_name="${DOMAIN:-_}" + # 确保已安装Nginx + ensure_nginx_installed || return 1 + # 检测Nginx配置目录结构并创建必要的目录 if [[ -d /www/server/nginx ]]; then # 宝塔面板 @@ -2750,6 +2796,9 @@ EOF } configure_nginx_https() { + # 确保已安装Nginx + ensure_nginx_installed || return 1 + # 检测Nginx配置目录结构并创建必要的目录 if [[ -d /www/server/nginx ]]; then # 宝塔面板