#!/usr/bin/env bash # 宝塔/服务器快速诊断:服务是否在跑、端口是否监听 set -uo pipefail BACKEND="$(cd "$(dirname "$0")" && pwd)" ROOT="$(cd "$BACKEND/.." && pwd)" PORT="${KEFU_PORT:-8000}" echo "========================================" echo " 抖音客服 - 运行诊断" echo "========================================" echo echo "[1] 端口 ${PORT} 监听状态:" if command -v ss &>/dev/null; then ss -tlnp | grep ":${PORT} " || echo " -> 未监听(服务未启动)" elif command -v netstat &>/dev/null; then netstat -tlnp 2>/dev/null | grep ":${PORT} " || echo " -> 未监听(服务未启动)" else echo " (无法检测,请安装 ss 或 netstat)" fi echo echo "[2] Python 环境:" BROKEN_BT="/home/www/server/pyporject_evn/versions/3.11.15/bin/python" if [ -x "$BROKEN_BT" ] && ! "$BROKEN_BT" -c "import ssl" 2>/dev/null; then echo " [X] 宝塔 Python 无 SSL(不可用): $BROKEN_BT" echo " 修复: AUTO_BUILD_PYTHON=1 bash $ROOT/install.sh" fi if [ -f "$BACKEND/lib/resolve_python.sh" ]; then # shellcheck source=lib/resolve_python.sh source "$BACKEND/lib/resolve_python.sh" if PY="$(resolve_python "$BACKEND" "$ROOT" 2>/dev/null)"; then echo " Python: $PY" "$PY" -V 2>&1 | sed 's/^/ /' if "$PY" -c "import ssl" 2>/dev/null; then "$PY" -c "import ssl; print(' SSL:', ssl.OPENSSL_VERSION)" else echo " SSL: 无(不可用)" fi if "$PY" -c "import uvicorn" 2>/dev/null; then echo " uvicorn: 已安装" else echo " uvicorn: 未安装 -> 运行 bash $BACKEND/baota_fix.sh" fi else echo " 未找到可用 Python 3.10+" fi else command -v python && python -V || echo " 未找到 python" fi echo echo "[3] 前端静态:" if [ -f "$ROOT/frontend/dist/index.html" ]; then echo " OK: $ROOT/frontend/dist/index.html" else echo " 缺失 -> 运行 bash $BACKEND/baota_init.sh" fi echo echo "[4] 宝塔项目进程:" ps aux 2>/dev/null | grep -E "uvicorn|douyin" | grep -v grep || echo " 未发现 uvicorn 进程" echo echo "[5] 防火墙(CentOS firewalld):" if command -v firewall-cmd &>/dev/null && systemctl is-active firewalld &>/dev/null; then firewall-cmd --list-ports 2>/dev/null | grep -q "${PORT}" \ && echo " 端口 ${PORT} 已放行" \ || echo " 端口 ${PORT} 未放行 -> firewall-cmd --add-port=${PORT}/tcp --permanent && firewall-cmd --reload" else echo " firewalld 未运行或未安装(可忽略,检查云服务器安全组)" fi echo echo "========================================" echo " 若端口未监听,按顺序执行:" echo " 若宝塔 Python 无 SSL,必须先编译可用 Python:" echo " AUTO_BUILD_PYTHON=1 bash $ROOT/install.sh" echo " KEFU_PYTHON=/usr/local/python3.11/bin/python3.11 bash $BACKEND/baota_fix.sh" echo " bash $BACKEND/baota_init.sh" echo " 宝塔启动命令: bash $BACKEND/baota_start.sh" echo echo " 手动测试启动:" echo " bash $BACKEND/baota_start.sh" echo "========================================"