114 lines
2.6 KiB
Bash
Executable File
114 lines
2.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
echo "========================================"
|
|
echo " 创赢未来评分系统 - 本地启动脚本"
|
|
echo "========================================"
|
|
echo ""
|
|
|
|
# 函数:检查端口并释放
|
|
check_port() {
|
|
local port=$1
|
|
local pid=$(lsof -ti:$port 2>/dev/null)
|
|
if [ -n "$pid" ]; then
|
|
echo "端口 $port 被占用,正在释放..."
|
|
kill -9 $pid 2>/dev/null || true
|
|
sleep 1
|
|
fi
|
|
}
|
|
|
|
# 释放端口
|
|
check_port 8876
|
|
check_port 5173
|
|
|
|
# 检查环境
|
|
echo "✅ 检查环境..."
|
|
|
|
# 检查后端虚拟环境
|
|
if [ ! -d "backend/venv" ]; then
|
|
echo "❌ 后端虚拟环境不存在,正在创建..."
|
|
cd backend
|
|
python3 -m venv venv
|
|
source venv/bin/activate
|
|
pip install -r requirements.txt
|
|
cd ..
|
|
else
|
|
echo "✅ 后端虚拟环境已存在"
|
|
fi
|
|
|
|
# 检查前端依赖
|
|
if [ ! -d "frontend/node_modules" ]; then
|
|
echo "❌ 前端依赖不存在,正在安装..."
|
|
cd frontend
|
|
npm install
|
|
cd ..
|
|
else
|
|
echo "✅ 前端依赖已存在"
|
|
fi
|
|
|
|
echo ""
|
|
echo "========================================"
|
|
echo " 启动服务"
|
|
echo "========================================"
|
|
echo ""
|
|
|
|
# 启动后端
|
|
echo "🚀 启动后端服务 (http://localhost:8876)"
|
|
cd backend
|
|
source venv/bin/activate
|
|
python manage.py migrate 2>/dev/null || echo "迁移可能需要手动执行"
|
|
python manage.py runserver 0.0.0.0:8876 > /tmp/backend.log 2>&1 &
|
|
BACKEND_PID=$!
|
|
echo " 后端 PID: $BACKEND_PID"
|
|
echo " 日志: /tmp/backend.log"
|
|
cd ..
|
|
|
|
# 等待后端启动
|
|
sleep 3
|
|
|
|
# 启动前端
|
|
echo ""
|
|
echo "🚀 启动前端服务 (http://localhost:5173)"
|
|
cd frontend
|
|
npm run dev > /tmp/frontend.log 2>&1 &
|
|
FRONTEND_PID=$!
|
|
echo " 前端 PID: $FRONTEND_PID"
|
|
echo " 日志: /tmp/frontend.log"
|
|
cd ..
|
|
|
|
echo ""
|
|
echo "========================================"
|
|
echo " 服务已启动!"
|
|
echo "========================================"
|
|
echo ""
|
|
echo "📱 前端页面: http://localhost:5173"
|
|
echo "🔧 后端 API: http://localhost:8876"
|
|
echo "📚 API文档: http://localhost:8876/api/docs/"
|
|
echo "⚙️ 后台管理: http://localhost:8876/admin/"
|
|
echo ""
|
|
echo "💡 查看日志:"
|
|
echo " tail -f /tmp/backend.log"
|
|
echo " tail -f /tmp/frontend.log"
|
|
echo ""
|
|
echo "🛑 停止服务: 按 Ctrl+C"
|
|
echo ""
|
|
|
|
# 保存 PID
|
|
echo "$BACKEND_PID $FRONTEND_PID" > /tmp/scoring_pids
|
|
|
|
# 捕获终止信号
|
|
cleanup() {
|
|
echo ""
|
|
echo "========================================"
|
|
echo " 正在停止服务..."
|
|
echo "========================================"
|
|
kill $BACKEND_PID $FRONTEND_PID 2>/dev/null || true
|
|
sleep 1
|
|
echo "✅ 服务已停止"
|
|
rm -f /tmp/scoring_pids
|
|
exit 0
|
|
}
|
|
trap cleanup INT TERM
|
|
|
|
# 等待
|
|
wait
|