fix: 优化宝塔面板Nginx重载逻辑,添加多种重启方式

- 添加BT Panel专用的Nginx重载流程
- 尝试多种方法:BT CLI工具、直接nginx命令、systemctl备用
- 改用进程检查(pgrep)验证Nginx状态,不依赖systemctl
- 修复BT Panel环境下nginx启动失败的问题
This commit is contained in:
WanWanYun
2025-11-13 09:39:47 +08:00
parent 0f53d0638c
commit c1b8e7b929

View File

@@ -2068,21 +2068,59 @@ EOF
# 启动或重载Nginx # 启动或重载Nginx
if [[ "$IS_BT_PANEL" == "true" ]]; then if [[ "$IS_BT_PANEL" == "true" ]]; then
# 宝塔面板:使用reload而不是restart # 宝塔面板:尝试多种方式
if systemctl is-active --quiet nginx; then print_info "宝塔环境尝试重载Nginx..."
systemctl reload 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 else
systemctl start nginx systemctl start nginx 2>/dev/null && print_info "已使用systemctl启动Nginx"
print_info "已启动宝塔Nginx"
fi fi
else else
# 标准Nginx重启 # 标准Nginx重启
systemctl restart nginx systemctl restart nginx
fi fi
if ! systemctl is-active --quiet nginx; then
print_error "Nginx启动失败" # 验证Nginx是否运行
return 1 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 fi
print_success "基础HTTP Nginx配置完成" print_success "基础HTTP Nginx配置完成"