#!/usr/bin/env bash # 使用宝塔「Python环境管理」安装的 Python 完成项目配置 # 用法: bash /www/wwwroot/douyin/backend/baota_use_panel_python.sh set -euo pipefail BACKEND="$(cd "$(dirname "$0")" && pwd)" ROOT="$(cd "$BACKEND/.." && pwd)" echo "========================================" echo " 宝塔 Python 环境配置" echo "========================================" echo # 扫描宝塔 Python(环境管理 / Python项目) PY="" for base in \ /home/www/server/pyporject_evn/versions \ /www/server/pyporject_evn/versions \ /www/server/panel/pyenv/versions; do [ -d "$base" ] || continue for ver_dir in $(ls -d "$base"/* 2>/dev/null | sort -V -r); do for name in python3 python; do candidate="$ver_dir/bin/$name" [ -x "$candidate" ] || continue ver="$("$candidate" -V 2>&1 | awk '{print $2}')" echo "[发现] $candidate ($ver)" if ! "$candidate" -c "import sys; sys.exit(0 if sys.version_info>=(3,10) else 1)" 2>/dev/null; then echo " 跳过: 版本低于 3.10" continue fi if ! "$candidate" -c "import ssl" 2>/dev/null; then echo " 跳过: 无 SSL(需在宝塔重装 Python 前先 yum install openssl-devel)" continue fi PY="$candidate" echo " -> 选用" break 3 done done done if [ -z "$PY" ]; then echo echo "[错误] 未找到可用的宝塔 Python 3.10+(需带 SSL)。" echo echo "请在宝塔面板操作:" echo " 1) 软件商店 -> Python项目管理器 -> 环境管理" echo " 2) SSH 先执行: yum install -y openssl openssl-devel" echo " 3) 环境管理 -> 安装 Python 3.11" echo " 4) 重新运行本脚本" echo echo "若已安装但仍无 SSL,卸载该版本后重装。" exit 1 fi echo echo "[OK] 使用宝塔 Python: $PY" "$PY" -c "import ssl; print('[OK] OpenSSL:', ssl.OPENSSL_VERSION)" echo export KEFU_PYTHON="$PY" export PLAYWRIGHT_BROWSERS_PATH="${PLAYWRIGHT_BROWSERS_PATH:-$ROOT/playwright-browsers}" echo "[1/4] 安装 Python 依赖..." "$PY" -m pip install -U pip "$PY" -m pip install -r "$BACKEND/requirements.txt" echo echo "[2/4] 创建项目 venv(可选,便于宝塔启动)..." "$PY" -m venv "$BACKEND/.venv" --clear "$BACKEND/.venv/bin/python" -m pip install -U pip -q "$BACKEND/.venv/bin/pip" install -r "$BACKEND/requirements.txt" chmod -R 755 "$BACKEND/.venv" chown -R www:www "$BACKEND/.venv" 2>/dev/null || true echo " venv: $BACKEND/.venv" echo echo "[3/4] Playwright Chromium..." KEFU_PYTHON="$BACKEND/.venv/bin/python" bash "$BACKEND/baota_playwright.sh" echo echo "[4/4] 前端与 IM 依赖..." if command -v npm &>/dev/null; then cd "$BACKEND/rpa_engine/douyin_im/static" && npm install --no-fund --no-audit cd "$ROOT/frontend" && npm install --no-fund --no-audit && npm run build else echo "[警告] 未安装 Node.js,请宝塔安装 Node 18+ 后手动 npm install" fi chown -R www:www "$ROOT" 2>/dev/null || true echo echo "========================================" echo " 配置完成" echo echo " 宝塔 Python项目 设置:" echo " 项目路径: $BACKEND" echo " Python环境: 选环境管理里的 3.11" echo " 启动命令: bash $BACKEND/baota_start.sh" echo " 依赖包: $BACKEND/requirements.txt" echo echo " .env 添加:" echo " PLAYWRIGHT_BROWSERS_PATH=$PLAYWRIGHT_BROWSERS_PATH" echo "========================================"