Files
Scoring-System/start-local.sh
2026-03-19 00:56:19 +08:00

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