|
|
#!/bin/bash
|
|
|
set -e
|
|
|
|
|
|
echo "============================================"
|
|
|
echo " 灵枢智能任务平台 - 本地模式启动"
|
|
|
echo "============================================"
|
|
|
echo
|
|
|
|
|
|
# 检查 Python
|
|
|
if ! command -v python3 &>/dev/null; then
|
|
|
echo "[错误] 未找到 python3,请先安装:sudo apt install python3 python3-pip"
|
|
|
exit 1
|
|
|
fi
|
|
|
|
|
|
# 检查 Docker(用于跑 MySQL)
|
|
|
if ! docker info >/dev/null 2>&1; then
|
|
|
echo "[错误] Docker 未运行,请先启动 Docker(MySQL 需要 Docker)"
|
|
|
exit 1
|
|
|
fi
|
|
|
|
|
|
# ── 1. 初始化 .env ────────────────────────────────────────────
|
|
|
if [ ! -f ".env" ]; then
|
|
|
cp .env.example .env
|
|
|
echo "[信息] 已生成 .env,请确认配置后重新运行本脚本"
|
|
|
fi
|
|
|
|
|
|
# 本地模式固定数据库地址为 127.0.0.1:3307
|
|
|
set_env() {
|
|
|
local key="$1" val="$2"
|
|
|
if grep -q "^${key}=" .env 2>/dev/null; then
|
|
|
sed -i "s|^${key}=.*|${key}=${val}|" .env
|
|
|
else
|
|
|
echo "${key}=${val}" >> .env
|
|
|
fi
|
|
|
}
|
|
|
|
|
|
# ── 自动填写宿主机 IP ─────────────────────────────────────────
|
|
|
set_env "DOCKER_HOST_IP" "127.0.0.1"
|
|
|
echo "[信息] 本地模式,DOCKER_HOST_IP=127.0.0.1"
|
|
|
|
|
|
# ── 自动填写 OpenClaw identity 目录 ──────────────────────────
|
|
|
IDENTITY_DIR="$HOME/.openclaw/identity"
|
|
|
if [ -d "$IDENTITY_DIR" ]; then
|
|
|
set_env "OPENCLAW_IDENTITY_DIR" "$IDENTITY_DIR"
|
|
|
echo "[信息] 已检测到 OpenClaw identity 目录: $IDENTITY_DIR"
|
|
|
else
|
|
|
echo "[警告] 未找到 OpenClaw identity 目录: $IDENTITY_DIR"
|
|
|
echo " 请确认 OpenClaw 已安装并完成初始化"
|
|
|
mkdir -p "$IDENTITY_DIR"
|
|
|
set_env "OPENCLAW_IDENTITY_DIR" "$IDENTITY_DIR"
|
|
|
fi
|
|
|
|
|
|
set_env "DB_HOST" "127.0.0.1"
|
|
|
set_env "DB_PORT" "3307"
|
|
|
set_env "DB_USER" "root"
|
|
|
set_env "DB_PASSWORD" "lingshu123"
|
|
|
set_env "DB_NAME" "lingshu"
|
|
|
set_env "OPENCLAW_URL" "http://127.0.0.1:18789"
|
|
|
set_env "LINGSHU_CALLBACK_URL" "http://127.0.0.1:5000"
|
|
|
|
|
|
# ── 2. 启动 MySQL 容器 ────────────────────────────────────────
|
|
|
echo "[启动] 正在启动 MySQL 容器..."
|
|
|
docker compose -f docker-compose.db-only.yml up -d
|
|
|
|
|
|
echo "[等待] 等待 MySQL 就绪..."
|
|
|
for i in $(seq 1 30); do
|
|
|
if docker exec lingshu_db mysqladmin ping -h localhost -plingshu123 --silent 2>/dev/null; then
|
|
|
echo "[信息] MySQL 已就绪"
|
|
|
break
|
|
|
fi
|
|
|
echo " 等待中... ($i/30)"
|
|
|
sleep 2
|
|
|
done
|
|
|
|
|
|
# ── 3. 安装 Python 依赖 ───────────────────────────────────────
|
|
|
echo
|
|
|
echo "[安装] 正在安装 Python 依赖..."
|
|
|
pip3 install -r backend/requirements.txt -q
|
|
|
|
|
|
# ── 4. 启动 Flask ─────────────────────────────────────────────
|
|
|
echo
|
|
|
echo "[启动] 正在启动 Flask 后端..."
|
|
|
echo "============================================"
|
|
|
echo " 启动成功!浏览器访问: http://localhost:5000"
|
|
|
echo " 账号: wangpai / admin123"
|
|
|
echo " 按 Ctrl+C 停止服务"
|
|
|
echo "============================================"
|
|
|
echo
|
|
|
|
|
|
cd backend
|
|
|
export FLASK_APP=app
|
|
|
export FLASK_ENV=development
|
|
|
export FLASK_DEBUG=1
|
|
|
|
|
|
# 从 .env 加载环境变量
|
|
|
set -a
|
|
|
source ../.env
|
|
|
set +a
|
|
|
|
|
|
python3 -m flask run --host=0.0.0.0 --port=5000
|