#!/usr/bin/env bash # 宝塔一键修复:权限 + 安装依赖 + 提示正确启动命令 # SSH 执行: bash /www/wwwroot/douyin/backend/baota_fix.sh set -euo pipefail BACKEND="$(cd "$(dirname "$0")" && pwd)" ROOT="$(cd "$BACKEND/.." && pwd)" # shellcheck source=lib/resolve_python.sh source "$BACKEND/lib/resolve_python.sh" echo "========================================" echo " 宝塔环境修复" echo "========================================" # 权限 chown -R www:www "$ROOT" 2>/dev/null || true chmod +x "$BACKEND/baota_start.sh" "$BACKEND/baota_init.sh" 2>/dev/null || true chmod +x "$ROOT/install.sh" "$ROOT/start_web.sh" "$ROOT/start_backend.sh" 2>/dev/null || true if [ -d "$BACKEND/.venv/bin" ]; then chmod -R 755 "$BACKEND/.venv" chmod +x "$BACKEND/.venv/bin/"* 2>/dev/null || true fi echo "[OK] 权限已修复" if [ -n "${KEFU_PYTHON:-}" ] && [ -x "$KEFU_PYTHON" ]; then PY="$KEFU_PYTHON" if ! "$PY" -c "import ssl" 2>/dev/null; then echo "[错误] KEFU_PYTHON 无 SSL: $KEFU_PYTHON" exit 1 fi else PY="$(resolve_python "$BACKEND" "$ROOT")" || { echo echo "请先编译可用 Python:" echo " AUTO_BUILD_PYTHON=1 bash $ROOT/install.sh" exit 1 } fi echo "[OK] Python: $PY ($("$PY" -V 2>&1))" if ! "$PY" -c "import ssl" 2>/dev/null; then echo "[错误] 该 Python 无 SSL,请换环境或执行: AUTO_BUILD_PYTHON=1 $ROOT/install.sh" exit 1 fi echo "[1/3] pip install requirements..." "$PY" -m pip install -U pip "$PY" -m pip install -r "$BACKEND/requirements.txt" echo "[OK] Python 依赖已安装" echo "[2/3] 校验 uvicorn..." "$PY" -c "import uvicorn, fastapi; print(' uvicorn + fastapi OK')" echo "[3/3] 可选:完整初始化 Playwright/前端" echo " bash $BACKEND/baota_init.sh" echo echo "========================================" echo " 请在宝塔面板修改以下配置:" echo echo " 项目路径: $BACKEND" echo " 启动命令: bash $BACKEND/baota_start.sh" echo " 初始化命令: bash $BACKEND/baota_init.sh" echo " 依赖包: $BACKEND/requirements.txt" echo echo " 不要用:" echo " backend/.venv/bin/uvicorn (不存在)" echo " start_web.bat (Windows 脚本,Linux 不能运行)" echo "========================================"