neural-sync/start.sh

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 ""