diff --git a/install.sh b/install.sh index 183958e..9f2fbba 100644 --- a/install.sh +++ b/install.sh @@ -2410,38 +2410,42 @@ EOF # 宝塔面板:尝试多种方式 print_info "宝塔环境,尝试重载Nginx..." - # 方式1: 使用宝塔命令行工具(如果存在) - if [[ -f /etc/init.d/bt ]]; then - /etc/init.d/bt restart 2>/dev/null - fi - - # 方式2: 直接使用nginx命令reload + # 优先使用最可靠的方式: 直接使用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" + # 先测试配置 + if /www/server/nginx/sbin/nginx -t 2>/dev/null; then + # 配置测试通过,尝试reload + if /www/server/nginx/sbin/nginx -s reload 2>/dev/null; then + print_success "已使用nginx -s reload重载配置" else - print_warning "Nginx reload失败,尝试systemctl..." + # reload失败,尝试重启 + print_warning "reload失败,尝试重启Nginx..." + /www/server/nginx/sbin/nginx -s stop 2>/dev/null || true + sleep 2 + if /www/server/nginx/sbin/nginx 2>/dev/null; then + print_success "Nginx已重新启动" + else + print_error "Nginx启动失败,请手动检查" + # 不退出脚本,继续后续步骤 + fi fi + else + print_error "Nginx配置测试失败" + # 显示配置错误但不退出脚本 + /www/server/nginx/sbin/nginx -t 2>&1 || true fi fi - # 方式3: 尝试systemctl(备用) + # 备用方式: 尝试systemctl(某些宝塔环境也支持) if systemctl is-active --quiet nginx 2>/dev/null; then - systemctl reload nginx 2>/dev/null && print_info "已使用systemctl重载配置" - else - systemctl start nginx 2>/dev/null && print_info "已使用systemctl启动Nginx" + systemctl reload nginx 2>/dev/null && print_info "已使用systemctl重载配置" || true fi else # 标准Nginx:重启 systemctl restart nginx fi + # 验证Nginx是否运行 sleep 2 if [[ "$IS_BT_PANEL" == "true" ]]; then @@ -2502,38 +2506,33 @@ configure_nginx_final() { # 宝塔面板:尝试多种方式 print_info "宝塔环境,重载Nginx配置..." - # 方式1: 使用宝塔命令行工具(如果存在) - if [[ -f /etc/init.d/bt ]]; then - /etc/init.d/bt restart 2>/dev/null - fi - - # 方式2: 直接使用nginx命令reload(最可靠) + # 优先使用最可靠的方式: 直接使用nginx命令reload if [[ -f /www/server/nginx/sbin/nginx ]]; then - /www/server/nginx/sbin/nginx -s reload 2>/dev/null - if [[ $? -eq 0 ]]; then + if /www/server/nginx/sbin/nginx -s reload 2>/dev/null; then print_success "已使用nginx -s reload重载配置" else - # 如果reload失败,尝试启动 - /www/server/nginx/sbin/nginx 2>/dev/null - if [[ $? -eq 0 ]]; then + # reload失败,尝试重启 + print_warning "reload失败,尝试重启Nginx..." + /www/server/nginx/sbin/nginx -s stop 2>/dev/null || true + sleep 2 + if /www/server/nginx/sbin/nginx 2>/dev/null; then print_success "已启动Nginx" else - print_warning "Nginx reload失败,尝试systemctl..." + print_warning "Nginx启动失败,请手动检查" fi fi fi - # 方式3: 尝试systemctl(备用) + # 备用方式: 尝试systemctl if systemctl is-active --quiet nginx 2>/dev/null; then - systemctl reload nginx 2>/dev/null && print_info "已使用systemctl重载配置" - else - systemctl start nginx 2>/dev/null && print_info "已使用systemctl启动Nginx" + systemctl reload nginx 2>/dev/null && print_info "已使用systemctl重载配置" || true fi else # 标准Nginx:重载 systemctl reload nginx fi + print_success "Nginx最终配置完成" echo "" }