agricultural-sock-amalysis/start-system.sh

206 lines
5.5 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# ===========================================
# 农业股票数据分析系统启动脚本
# ===========================================
echo "🌾 农业股票数据分析系统启动中..."
echo "=========================================="
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# 检查必要的软件
check_requirements() {
echo -e "${BLUE}📋 检查系统环境...${NC}"
# 检查Java
if ! command -v java &> /dev/null; then
echo -e "${RED}❌ 未安装Java请先安装JDK 8+${NC}"
exit 1
fi
# 检查Maven
if ! command -v mvn &> /dev/null; then
echo -e "${RED}❌ 未安装Maven请先安装Maven${NC}"
exit 1
fi
# 检查Node.js
if ! command -v node &> /dev/null; then
echo -e "${RED}❌ 未安装Node.js请先安装Node.js 16+${NC}"
exit 1
fi
# 检查MySQL
if ! command -v mysql &> /dev/null; then
echo -e "${RED}❌ 未安装MySQL请先安装MySQL 8.0+${NC}"
exit 1
fi
echo -e "${GREEN}✅ 系统环境检查通过${NC}"
}
# 初始化数据库
init_database() {
echo -e "${BLUE}🗄️ 初始化数据库...${NC}"
# 检查数据库连接
mysql -u root -p -e "SELECT 1;" &> /dev/null
if [ $? -ne 0 ]; then
echo -e "${RED}❌ 无法连接到MySQL数据库${NC}"
exit 1
fi
# 创建数据库和表结构
echo -e "${YELLOW}📝 创建数据库表结构...${NC}"
mysql -u root -p agricultural_stock < spark-processor/database_tables.sql
echo -e "${GREEN}✅ 数据库初始化完成${NC}"
}
# 启动Spark数据处理器
start_spark_processor() {
echo -e "${BLUE}⚡ 启动Spark数据处理器...${NC}"
cd spark-processor
# 编译项目
echo -e "${YELLOW}🔨 编译Spark项目...${NC}"
mvn clean compile > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo -e "${RED}❌ Spark项目编译失败${NC}"
exit 1
fi
# 运行数据处理
echo -e "${YELLOW}📊 执行数据分析...${NC}"
mvn exec:java -Dexec.mainClass="com.agricultural.spark.StockDataProcessor" > ../logs/spark.log 2>&1 &
SPARK_PID=$!
cd ..
echo -e "${GREEN}✅ Spark数据处理器已启动 (PID: $SPARK_PID)${NC}"
}
# 启动后端服务
start_backend() {
echo -e "${BLUE}🚀 启动后端服务...${NC}"
cd backend
# 编译项目
echo -e "${YELLOW}🔨 编译后端项目...${NC}"
mvn clean compile > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo -e "${RED}❌ 后端项目编译失败${NC}"
exit 1
fi
# 启动Spring Boot应用
echo -e "${YELLOW}🌐 启动Spring Boot应用...${NC}"
mvn spring-boot:run > ../logs/backend.log 2>&1 &
BACKEND_PID=$!
cd ..
echo -e "${GREEN}✅ 后端服务已启动 (PID: $BACKEND_PID)${NC}"
echo -e "${GREEN} API地址: http://localhost:8080${NC}"
}
# 启动前端服务
start_frontend() {
echo -e "${BLUE}🎨 启动前端服务...${NC}"
cd frontend
# 安装依赖
if [ ! -d "node_modules" ]; then
echo -e "${YELLOW}📦 安装前端依赖...${NC}"
npm install > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo -e "${RED}❌ 前端依赖安装失败${NC}"
exit 1
fi
fi
# 启动开发服务器
echo -e "${YELLOW}🌐 启动Vue开发服务器...${NC}"
npm run dev > ../logs/frontend.log 2>&1 &
FRONTEND_PID=$!
cd ..
echo -e "${GREEN}✅ 前端服务已启动 (PID: $FRONTEND_PID)${NC}"
echo -e "${GREEN} 访问地址: http://localhost:3000${NC}"
}
# 创建日志目录
create_log_dir() {
if [ ! -d "logs" ]; then
mkdir -p logs
fi
}
# 保存进程ID
save_pids() {
echo "$SPARK_PID" > logs/spark.pid
echo "$BACKEND_PID" > logs/backend.pid
echo "$FRONTEND_PID" > logs/frontend.pid
echo -e "${BLUE}📝 进程ID已保存到logs目录${NC}"
}
# 显示系统状态
show_status() {
echo ""
echo -e "${GREEN}🎉 农业股票数据分析系统启动完成!${NC}"
echo "=========================================="
echo -e "${BLUE}📊 Spark数据处理器:${NC} PID $SPARK_PID"
echo -e "${BLUE}🚀 后端API服务:${NC} http://localhost:8080"
echo -e "${BLUE}🎨 前端Web界面:${NC} http://localhost:3000"
echo ""
echo -e "${YELLOW}📋 系统功能:${NC}"
echo " • 实时股票数据分析"
echo " • 技术指标计算"
echo " • 市场趋势预测"
echo " • 数据可视化展示"
echo ""
echo -e "${YELLOW}📝 查看日志:${NC}"
echo " • Spark日志: tail -f logs/spark.log"
echo " • 后端日志: tail -f logs/backend.log"
echo " • 前端日志: tail -f logs/frontend.log"
echo ""
echo -e "${YELLOW}🛑 停止系统:${NC}"
echo " • 运行: ./stop-system.sh"
echo "=========================================="
}
# 主函数
main() {
check_requirements
create_log_dir
init_database
# 等待用户确认
echo -e "${YELLOW}准备启动系统按Enter继续...${NC}"
read
start_spark_processor
sleep 5 # 等待Spark处理完成
start_backend
sleep 10 # 等待后端启动
start_frontend
sleep 5 # 等待前端启动
save_pids
show_status
}
# 错误处理
trap 'echo -e "${RED}❌ 启动过程中发生错误,正在清理...${NC}"; kill $SPARK_PID $BACKEND_PID $FRONTEND_PID 2>/dev/null; exit 1' ERR
# 执行主函数
main