#!/bin/bash # 设置颜色输出 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # 设置开发环境变量 export SPRING_PROFILES_ACTIVE=dev export ENVIRONMENT=dev echo -e "${GREEN}启动农业股票分析平台 (开发环境)...${NC}" # 检查端口是否被占用 check_port() { if lsof -Pi :$1 -sTCP:LISTEN -t >/dev/null ; then echo -e "${RED}端口 $1 已被占用,请先关闭相关服务${NC}" return 1 fi return 0 } # 检查必要端口 echo -e "${YELLOW}检查端口占用情况...${NC}" if ! check_port 3000; then exit 1; fi if ! check_port 8080; then exit 1; fi # 启动前端开发服务器 echo -e "${YELLOW}启动前端服务 (开发模式)...${NC}" cd frontend npm run dev & FRONTEND_PID=$! # 等待一下 sleep 3 # 启动后端服务 echo -e "${YELLOW}启动后端服务 (开发环境: ${SPRING_PROFILES_ACTIVE})...${NC}" cd ../backend mvn spring-boot:run -Dspring-boot.run.profiles=dev & BACKEND_PID=$! # 等待一下 sleep 5 # 启动数据采集服务 echo -e "${YELLOW}启动数据采集服务...${NC}" cd ../data-collector python stock_crawler.py & COLLECTOR_PID=$! # 可选:启动Spark处理器(开发环境) echo -e "${YELLOW}是否启动Spark数据处理器?(y/n)${NC}" read -t 10 -p "10秒后自动跳过..." SPARK_CHOICE if [[ $SPARK_CHOICE =~ ^[Yy]$ ]]; then echo -e "${YELLOW}启动Spark数据处理器 (开发环境)...${NC}" cd ../spark-processor java -Denvironment=dev -cp target/classes:target/lib/* com.agricultural.spark.StockDataProcessor & SPARK_PID=$! fi echo -e "${GREEN}开发环境服务启动完成!${NC}" echo "================================================================" echo " 🌐 前端服务: http://localhost:3000" echo " 🔧 后端服务: http://localhost:8080" echo " 📚 API文档: http://localhost:8080/swagger-ui" echo " 🏷️ 环境配置: ${SPRING_PROFILES_ACTIVE}" echo " 📊 数据库: MySQL (localhost:3306)" echo " 🗃️ 缓存: Redis (localhost:6379)" echo "================================================================" # 保存PID到文件,用于停止服务 echo $FRONTEND_PID > frontend.pid echo $BACKEND_PID > backend.pid echo $COLLECTOR_PID > collector.pid if [[ ! -z $SPARK_PID ]]; then echo $SPARK_PID > spark.pid fi echo -e "${YELLOW}使用 ./stop-dev.sh 停止所有开发服务${NC}" echo -e "${YELLOW}使用 Ctrl+C 或 Enter 键停止服务...${NC}" # 设置信号处理 cleanup() { echo -e "\n${YELLOW}正在停止所有服务...${NC}" kill $FRONTEND_PID $BACKEND_PID $COLLECTOR_PID 2>/dev/null if [[ ! -z $SPARK_PID ]]; then kill $SPARK_PID 2>/dev/null fi # 清理PID文件 rm -f frontend.pid backend.pid collector.pid spark.pid echo -e "${GREEN}所有服务已停止${NC}" exit 0 } trap cleanup SIGINT SIGTERM # 等待用户输入或信号 wait