96 lines
2.4 KiB
Bash
Executable File
96 lines
2.4 KiB
Bash
Executable File
#!/bin/bash
|
|
# Neural Sync 启动器 - 一键启动前后端服务
|
|
|
|
set -e
|
|
|
|
PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
cd "$PROJECT_DIR"
|
|
|
|
echo "🚀 Neural Sync 启动器"
|
|
echo "===================="
|
|
|
|
# 颜色定义
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
RED='\033[0;31m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# 检查虚拟环境
|
|
if [ ! -d "venv" ]; then
|
|
echo -e "${RED}❌ 虚拟环境不存在,请先创建: python -m venv venv${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
# 激活虚拟环境
|
|
source venv/bin/activate
|
|
|
|
# 清理端口
|
|
echo "🧹 清理端口..."
|
|
lsof -ti:8000 2>/dev/null | xargs kill -9 2>/dev/null || true
|
|
lsof -ti:5173 2>/dev/null | xargs kill -9 2>/dev/null || true
|
|
sleep 1
|
|
|
|
# 创建日志目录
|
|
mkdir -p logs
|
|
|
|
# 启动后端
|
|
echo -e "${GREEN}▶️ 启动后端服务...${NC}"
|
|
cd backend
|
|
nohup uvicorn app.main:app --reload --port 8000 > ../logs/backend.log 2>&1 &
|
|
BACKEND_PID=$!
|
|
cd ..
|
|
|
|
# 等待后端启动
|
|
echo "⏳ 等待后端启动..."
|
|
for i in {1..10}; do
|
|
if curl -s http://127.0.0.1:8000/docs > /dev/null 2>&1; then
|
|
echo -e "${GREEN}✅ 后端启动成功 (PID: $BACKEND_PID)${NC}"
|
|
break
|
|
fi
|
|
if [ $i -eq 10 ]; then
|
|
echo -e "${RED}❌ 后端启动失败,查看日志: logs/backend.log${NC}"
|
|
exit 1
|
|
fi
|
|
sleep 1
|
|
done
|
|
|
|
# 启动前端
|
|
echo -e "${GREEN}▶️ 启动前端服务...${NC}"
|
|
cd frontend
|
|
nohup npm run dev -- --host > ../logs/frontend.log 2>&1 &
|
|
FRONTEND_PID=$!
|
|
cd ..
|
|
|
|
# 等待前端启动
|
|
echo "⏳ 等待前端启动..."
|
|
for i in {1..15}; do
|
|
if curl -s http://127.0.0.1:5173 > /dev/null 2>&1; then
|
|
echo -e "${GREEN}✅ 前端启动成功 (PID: $FRONTEND_PID)${NC}"
|
|
break
|
|
fi
|
|
if [ $i -eq 15 ]; then
|
|
echo -e "${YELLOW}⚠️ 前端可能还在启动中,查看日志: logs/frontend.log${NC}"
|
|
break
|
|
fi
|
|
sleep 1
|
|
done
|
|
|
|
# 保存 PID 到文件
|
|
echo "$BACKEND_PID" > logs/backend.pid
|
|
echo "$FRONTEND_PID" > logs/frontend.pid
|
|
|
|
echo ""
|
|
echo -e "${GREEN}🎉 所有服务启动完成!${NC}"
|
|
echo "===================="
|
|
echo -e " 后端: ${YELLOW}http://127.0.0.1:8000${NC}"
|
|
echo -e " 前端: ${YELLOW}http://127.0.0.1:5173${NC}"
|
|
echo -e " API 文档: ${YELLOW}http://127.0.0.1:8000/docs${NC}"
|
|
echo ""
|
|
echo "📝 日志文件:"
|
|
echo " 后端: logs/backend.log"
|
|
echo " 前端: logs/frontend.log"
|
|
echo ""
|
|
echo -e "${YELLOW}💡 停止服务: ./stop.sh${NC}"
|
|
echo -e "${YELLOW}💡 查看日志: tail -f logs/backend.log 或 logs/frontend.log${NC}"
|
|
echo ""
|