Files
erp-ass/start.sh
dazhuang 344a750cfb feat: add one-click startup scripts for project management
- 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
2026-03-22 02:49:22 +00:00

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