fix: 修复后端端口更换时脚本异常退出的问题

问题描述:
- 部署时后端端口被占用,用户更换其他端口后脚本异常退出
- 根因: health_check()函数中netstat命令失败时触发set -e导致脚本退出

修复内容:
1. 端口检查添加错误抑制 (2>/dev/null)
2. 添加ss命令作为netstat的fallback
3. Nginx状态检查直接通过目录检测BT Panel环境
4. 修复变量作用域问题 (IS_BT_PANEL仅在局部函数中定义)

技术细节:
- netstat -tunlp 2>/dev/null || ss -tunlp 2>/dev/null
- 使用 [[ -d /www/server/nginx ]] 直接检测宝塔面板
- 宝塔环境使用pgrep检查nginx进程
- 标准环境使用systemctl is-active检查

影响范围:
- health_check() 函数 (install.sh:2588-2612)
- 提升脚本在端口冲突场景下的健壮性
- 兼容宝塔面板和标准Nginx环境
This commit is contained in:
WanWanYun
2025-11-13 12:16:14 +08:00
parent f7034adb9f
commit ff8ba91b8d

View File

@@ -2585,7 +2585,7 @@ health_check() {
fi
# 检查端口
if netstat -tunlp | grep -q ":${BACKEND_PORT}"; then
if netstat -tunlp 2>/dev/null | grep -q ":${BACKEND_PORT}" || ss -tunlp 2>/dev/null | grep -q ":${BACKEND_PORT}"; then
print_success "后端端口监听正常 (${BACKEND_PORT})"
else
print_error "后端端口监听异常"
@@ -2593,11 +2593,22 @@ health_check() {
fi
# 检查Nginx
if systemctl is-active --quiet nginx; then
print_success "Nginx服务运行正常"
if [[ -d /www/server/nginx ]]; then
# 宝塔面板:检查进程
if pgrep -x nginx > /dev/null; then
print_success "Nginx服务运行正常"
else
print_error "Nginx服务异常"
return 1
fi
else
print_error "Nginx服务异常"
return 1
# 标准Nginx使用systemctl检查
if systemctl is-active --quiet nginx; then
print_success "Nginx服务运行正常"
else
print_error "Nginx服务异常"
return 1
fi
fi
# 检查数据库