From c1b8e7b9295ffc0f9fab496ee460bc31b82cf005 Mon Sep 17 00:00:00 2001 From: WanWanYun Date: Thu, 13 Nov 2025 09:39:47 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E5=AE=9D=E5=A1=94?= =?UTF-8?q?=E9=9D=A2=E6=9D=BFNginx=E9=87=8D=E8=BD=BD=E9=80=BB=E8=BE=91?= =?UTF-8?q?=EF=BC=8C=E6=B7=BB=E5=8A=A0=E5=A4=9A=E7=A7=8D=E9=87=8D=E5=90=AF?= =?UTF-8?q?=E6=96=B9=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加BT Panel专用的Nginx重载流程 - 尝试多种方法:BT CLI工具、直接nginx命令、systemctl备用 - 改用进程检查(pgrep)验证Nginx状态,不依赖systemctl - 修复BT Panel环境下nginx启动失败的问题 --- install.sh | 56 +++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 47 insertions(+), 9 deletions(-) diff --git a/install.sh b/install.sh index df50125..89dfb5e 100644 --- a/install.sh +++ b/install.sh @@ -2068,21 +2068,59 @@ EOF # 启动或重载Nginx if [[ "$IS_BT_PANEL" == "true" ]]; then - # 宝塔面板:使用reload而不是restart - if systemctl is-active --quiet nginx; then - systemctl reload nginx - print_info "已重载宝塔Nginx配置" + # 宝塔面板:尝试多种方式 + print_info "宝塔环境,尝试重载Nginx..." + + # 方式1: 使用宝塔命令行工具(如果存在) + if [[ -f /etc/init.d/bt ]]; then + /etc/init.d/bt restart 2>/dev/null + fi + + # 方式2: 直接使用nginx命令reload + if [[ -f /www/server/nginx/sbin/nginx ]]; then + /www/server/nginx/sbin/nginx -s reload 2>/dev/null + if [[ $? -eq 0 ]]; then + print_success "已使用nginx -s reload重载配置" + else + # 如果reload失败,尝试启动 + /www/server/nginx/sbin/nginx 2>/dev/null + if [[ $? -eq 0 ]]; then + print_success "已启动Nginx" + else + print_warning "Nginx reload失败,尝试systemctl..." + fi + fi + fi + + # 方式3: 尝试systemctl(备用) + if systemctl is-active --quiet nginx 2>/dev/null; then + systemctl reload nginx 2>/dev/null && print_info "已使用systemctl重载配置" else - systemctl start nginx - print_info "已启动宝塔Nginx" + systemctl start nginx 2>/dev/null && print_info "已使用systemctl启动Nginx" fi else # 标准Nginx:重启 systemctl restart nginx fi - if ! systemctl is-active --quiet nginx; then - print_error "Nginx启动失败" - return 1 + + # 验证Nginx是否运行 + sleep 2 + if [[ "$IS_BT_PANEL" == "true" ]]; then + # 宝塔:检查进程 + if pgrep -x nginx > /dev/null; then + print_success "Nginx运行正常" + else + print_error "Nginx未运行" + print_warning "请在宝塔面板中手动启动Nginx,或运行:" + print_warning "/www/server/nginx/sbin/nginx" + return 1 + fi + else + # 标准Nginx:使用systemctl检查 + if ! systemctl is-active --quiet nginx; then + print_error "Nginx启动失败" + return 1 + fi fi print_success "基础HTTP Nginx配置完成"