102 lines
2.8 KiB
Bash
102 lines
2.8 KiB
Bash
#!/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 |