- Add start.sh/start.bat for one-click startup (backend + frontend) - Add stop.sh/stop.bat for stopping all services - Add restart.sh for restarting services - Add status.sh for checking service status - Add Makefile with convenient management commands - Add comprehensive documentation (ONE_CLICK_START.md) - Update README with one-click startup instructions Features: - Automatic environment checking (venv, node_modules) - Process management with PID tracking - Unified log management (logs/*.log) - Health checking after startup - Support for Linux, macOS, and Windows - No more need for multiple terminal windows Usage: ./start.sh # Start all services ./stop.sh # Stop all services ./status.sh # Check service status ./restart.sh # Restart services make start # Alternative using Makefile Benefits: - One command instead of multiple terminals - Automatic environment validation - Centralized logging - Process lifecycle management - Developer-friendly output messages
128 lines
3.6 KiB
Bash
Executable File
128 lines
3.6 KiB
Bash
Executable File
#!/bin/bash
|
|
# ERP AI Assistant - 一键启动脚本
|
|
|
|
set -e
|
|
|
|
# 颜色定义
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# 项目根目录
|
|
PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
BACKEND_DIR="$PROJECT_ROOT/backend"
|
|
FRONTEND_DIR="$PROJECT_ROOT/frontend"
|
|
LOGS_DIR="$PROJECT_ROOT/logs"
|
|
|
|
# 创建日志目录
|
|
mkdir -p "$LOGS_DIR"
|
|
|
|
# 日志文件
|
|
BACKEND_LOG="$LOGS_DIR/backend.log"
|
|
FRONTEND_LOG="$LOGS_DIR/frontend.log"
|
|
PID_FILE="$LOGS_DIR/pids.txt"
|
|
|
|
echo -e "${BLUE}========================================${NC}"
|
|
echo -e "${BLUE} ERP AI Assistant - 启动中...${NC}"
|
|
echo -e "${BLUE}========================================${NC}"
|
|
echo ""
|
|
|
|
# 检查虚拟环境
|
|
if [ ! -d "$BACKEND_DIR/venv" ]; then
|
|
echo -e "${RED}✗ 后端虚拟环境不存在${NC}"
|
|
echo -e "${YELLOW} 请先运行: cd backend && python3 -m venv venv && pip install -r requirements.txt${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
# 检查 node_modules
|
|
if [ ! -d "$FRONTEND_DIR/node_modules" ]; then
|
|
echo -e "${RED}✗ 前端依赖未安装${NC}"
|
|
echo -e "${YELLOW} 请先运行: cd frontend && npm install${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
# 检查 .env 文件
|
|
if [ ! -f "$BACKEND_DIR/.env" ]; then
|
|
echo -e "${YELLOW}⚠ .env 文件不存在,使用 .env.example${NC}"
|
|
cp "$BACKEND_DIR/.env.example" "$BACKEND_DIR/.env"
|
|
fi
|
|
|
|
# 清理旧进程
|
|
if [ -f "$PID_FILE" ]; then
|
|
echo -e "${YELLOW}停止旧进程...${NC}"
|
|
while read pid; do
|
|
if kill -0 "$pid" 2>/dev/null; then
|
|
kill "$pid" 2>/dev/null || true
|
|
fi
|
|
done < "$PID_FILE"
|
|
rm -f "$PID_FILE"
|
|
sleep 2
|
|
fi
|
|
|
|
# 清空日志
|
|
> "$BACKEND_LOG"
|
|
> "$FRONTEND_LOG"
|
|
|
|
echo -e "${GREEN}启动后端服务...${NC}"
|
|
cd "$BACKEND_DIR"
|
|
source venv/bin/activate
|
|
nohup python -m app.main >> "$BACKEND_LOG" 2>&1 &
|
|
BACKEND_PID=$!
|
|
echo "$BACKEND_PID" >> "$PID_FILE"
|
|
echo -e " PID: $BACKEND_PID"
|
|
echo -e " 日志: $BACKEND_LOG"
|
|
echo -e " 地址: ${GREEN}http://localhost:8000${NC}"
|
|
|
|
# 等待后端启动
|
|
echo -e "\n${YELLOW}等待后端启动...${NC}"
|
|
sleep 3
|
|
|
|
# 检查后端是否成功启动
|
|
if curl -s http://localhost:8000/health > /dev/null 2>&1; then
|
|
echo -e "${GREEN}✓ 后端启动成功${NC}"
|
|
else
|
|
echo -e "${YELLOW}⚠ 后端可能还在启动中,请稍后检查日志${NC}"
|
|
fi
|
|
|
|
echo -e "\n${GREEN}启动前端服务...${NC}"
|
|
cd "$FRONTEND_DIR"
|
|
nohup npm run dev >> "$FRONTEND_LOG" 2>&1 &
|
|
FRONTEND_PID=$!
|
|
echo "$FRONTEND_PID" >> "$PID_FILE"
|
|
echo -e " PID: $FRONTEND_PID"
|
|
echo -e " 日志: $FRONTEND_LOG"
|
|
echo -e " 地址: ${GREEN}http://localhost:5173${NC}"
|
|
|
|
# 等待前端启动
|
|
echo -e "\n${YELLOW}等待前端启动...${NC}"
|
|
sleep 5
|
|
|
|
# 检查前端是否成功启动
|
|
if curl -s http://localhost:5173 > /dev/null 2>&1; then
|
|
echo -e "${GREEN}✓ 前端启动成功${NC}"
|
|
else
|
|
echo -e "${YELLOW}⚠ 前端可能还在启动中,请稍后检查日志${NC}"
|
|
fi
|
|
|
|
echo ""
|
|
echo -e "${GREEN}========================================${NC}"
|
|
echo -e "${GREEN} ✅ 启动完成!${NC}"
|
|
echo -e "${GREEN}========================================${NC}"
|
|
echo ""
|
|
echo -e "📍 访问地址:"
|
|
echo -e " 前端: ${BLUE}http://localhost:5173${NC}"
|
|
echo -e " 后端: ${BLUE}http://localhost:8000${NC}"
|
|
echo -e " API文档: ${BLUE}http://localhost:8000/docs${NC}"
|
|
echo ""
|
|
echo -e "📋 管理命令:"
|
|
echo -e " 查看日志: ${YELLOW}tail -f logs/backend.log${NC} 或 ${YELLOW}tail -f logs/frontend.log${NC}"
|
|
echo -e " 停止服务: ${YELLOW}./stop.sh${NC}"
|
|
echo -e " 重启服务: ${YELLOW}./restart.sh${NC}"
|
|
echo ""
|
|
echo -e "💡 提示:"
|
|
echo -e " - 后端日志: $BACKEND_LOG"
|
|
echo -e " - 前端日志: $FRONTEND_LOG"
|
|
echo -e " - 进程 PID 已保存到: $PID_FILE"
|
|
echo "" |