更新
This commit is contained in:
@@ -0,0 +1,104 @@
|
||||
#!/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 "========================================"
|
||||
Reference in New Issue
Block a user