43 lines
1.2 KiB
Bash
43 lines
1.2 KiB
Bash
#!/usr/bin/env bash
|
|
# 生产模式:确保前端已构建,单端口提供 Web + API
|
|
# 兼容:install.sh 自建的 .venv / 宝塔 Python 项目环境
|
|
set -euo pipefail
|
|
|
|
ROOT="$(cd "$(dirname "$0")" && pwd)"
|
|
cd "$ROOT"
|
|
|
|
export PLAYWRIGHT_BROWSERS_PATH="${PLAYWRIGHT_BROWSERS_PATH:-$ROOT/playwright-browsers}"
|
|
export KEFU_SERVE_WEB="${KEFU_SERVE_WEB:-true}"
|
|
export KEFU_STATIC_DIR="${KEFU_STATIC_DIR:-$ROOT/frontend/dist}"
|
|
|
|
PY=""
|
|
if [ -x "$ROOT/backend/.venv/bin/python" ]; then
|
|
PY="$ROOT/backend/.venv/bin/python"
|
|
elif command -v python &>/dev/null; then
|
|
PY="$(command -v python)"
|
|
fi
|
|
|
|
if [ -z "$PY" ]; then
|
|
echo "[错误] 未找到 Python,请运行 ./install.sh 或在宝塔配置 Python 项目"
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -f "$ROOT/frontend/dist/index.html" ]; then
|
|
echo "[System] 未找到 frontend/dist,正在构建前端..."
|
|
cd "$ROOT/frontend"
|
|
npm install --no-fund --no-audit
|
|
npm run build
|
|
cd "$ROOT"
|
|
fi
|
|
|
|
HOST="${KEFU_HOST:-0.0.0.0}"
|
|
PORT="${KEFU_PORT:-8000}"
|
|
|
|
echo "[System] Starting Web service (API + UI)..."
|
|
echo "[System] Python: $PY"
|
|
echo "[System] URL: http://${HOST}:${PORT}"
|
|
echo
|
|
|
|
cd "$ROOT/backend"
|
|
exec "$PY" -m uvicorn main:app --host "$HOST" --port "$PORT"
|