#!/bin/bash # 社区生鲜团购系统启动脚本 echo "=========================================" echo " 社区生鲜团购系统启动脚本 v1.0 " echo "=========================================" echo "" # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # 检查Java环境 echo -e "${YELLOW}[1/4] 检查Java环境...${NC}" if ! command -v java &> /dev/null; then echo -e "${RED}❌ Java未安装,请先安装JDK 1.8+${NC}" exit 1 fi echo -e "${GREEN}✅ Java环境正常${NC}" # 检查Node环境 echo -e "${YELLOW}[2/4] 检查Node环境...${NC}" if ! command -v node &> /dev/null; then echo -e "${RED}❌ Node.js未安装,请先安装Node.js 16+${NC}" exit 1 fi echo -e "${GREEN}✅ Node环境正常${NC}" # 启动后端 echo "" echo -e "${YELLOW}[3/4] 启动Spring Boot后端...${NC}" cd "$(dirname "$0")" # 检查8080端口是否被占用 if lsof -Pi :8080 -sTCP:LISTEN -t >/dev/null ; then echo -e "${YELLOW}⚠️ 端口8080已被占用,尝试停止现有服务...${NC}" kill -9 $(lsof -t -i:8080) 2>/dev/null sleep 2 fi # 启动后端(后台运行) echo "正在启动后端服务..." nohup mvn spring-boot:run > logs/backend.log 2>&1 & BACKEND_PID=$! echo "后端PID: $BACKEND_PID" # 等待后端启动 echo "等待后端服务启动..." for i in {1..30}; do if curl -s http://localhost:8080/actuator/health > /dev/null 2>&1; then echo -e "${GREEN}✅ 后端服务启动成功!${NC}" break fi if [ $i -eq 30 ]; then echo -e "${RED}❌ 后端服务启动超时,请检查日志: logs/backend.log${NC}" exit 1 fi sleep 1 echo -n "." done # 启动前端 echo "" echo -e "${YELLOW}[4/4] 启动Vue前端...${NC}" cd flash-sale-frontend # 检查依赖 if [ ! -d "node_modules" ]; then echo "安装前端依赖..." npm install --cache /tmp/npm-cache fi # 检查3000端口 if lsof -Pi :3000 -sTCP:LISTEN -t >/dev/null ; then echo -e "${YELLOW}⚠️ 端口3000已被占用,使用其他端口...${NC}" fi # 启动前端(后台运行) echo "正在启动前端服务..." nohup npm run dev > ../logs/frontend.log 2>&1 & FRONTEND_PID=$! echo "前端PID: $FRONTEND_PID" # 等待前端启动 sleep 3 # 显示访问信息 echo "" echo "=========================================" echo -e "${GREEN}✅ 系统启动完成!${NC}" echo "=========================================" echo "" echo "访问地址:" echo -e " 前端应用: ${GREEN}http://localhost:3000${NC} 或 ${GREEN}http://localhost:3001${NC}" echo -e " 后端API: ${GREEN}http://localhost:8080${NC}" echo -e " API文档: ${GREEN}http://localhost:8080/doc.html${NC}" echo "" echo "测试账号:" echo " 普通用户: user / 123456" echo " 管理员: admin / 123456" echo "" echo "停止服务:" echo " 后端PID: $BACKEND_PID (kill $BACKEND_PID)" echo " 前端PID: $FRONTEND_PID (kill $FRONTEND_PID)" echo "" echo "查看日志:" echo " 后端日志: tail -f logs/backend.log" echo " 前端日志: tail -f logs/frontend.log" echo "" echo "=========================================" # 保存PID到文件 echo "$BACKEND_PID" > .backend.pid echo "$FRONTEND_PID" > .frontend.pid echo -e "${YELLOW}提示: 使用 ./stop-system.sh 停止所有服务${NC}"