Files
happy-life-star/backend/start-services.sh
T
peanut c77352877d feat: 完成Nacos配置优化和WebSocket集成
主要更新:
1. 统一所有微服务端口配置(19000-19008)
2. 为所有服务创建本地/测试/生产三套环境配置
3. 配置Nacos认证密码(本地:Peanut2817*#, 测试/生产:EmotionMuseum2025)
4. 优化网关路由配置,支持负载均衡和WebSocket
5. 新增emotion-websocket模块,支持实时聊天
6. 前端集成WebSocket,替代HTTP轮询
7. 添加配置验证和管理工具脚本

技术特性:
- 完整的环境隔离和服务发现
- WebSocket实时通信支持
- 负载均衡路由配置
- 跨域和安全配置
- 自动重连和心跳检测
2025-07-17 18:10:45 +08:00

135 lines
3.5 KiB
Bash
Executable File

#!/bin/bash
# 情感博物馆微服务启动脚本
# 支持环境参数控制
# 默认环境
DEFAULT_ENV="local"
ENV=${1:-$DEFAULT_ENV}
echo "=========================================="
echo "情感博物馆微服务启动脚本"
echo "启动环境: $ENV"
echo "=========================================="
# 检查基础服务
check_services() {
echo "📊 检查基础服务..."
if ! nc -z localhost 3306; then
echo "❌ MySQL服务未启动,请先启动MySQL服务"
echo "可以使用: brew services start mysql"
exit 1
fi
if ! nc -z localhost 6379; then
echo "❌ Redis服务未启动,请先启动Redis服务"
echo "可以使用: brew services start redis"
exit 1
fi
echo "✅ 基础服务检查通过"
}
# 启动服务函数
start_service() {
local service_name=$1
local port=$2
local description=$3
echo "🚀 启动 $description ($service_name:$port)..."
cd $service_name
# 检查端口是否被占用
if lsof -Pi :$port -sTCP:LISTEN -t >/dev/null ; then
echo "⚠️ 端口 $port 已被占用,跳过 $service_name"
cd ..
return
fi
# 编译项目
echo "📦 编译 $service_name..."
mvn clean package -DskipTests -q
if [ $? -ne 0 ]; then
echo "$service_name 编译失败"
cd ..
return
fi
# 启动服务
echo "🔄 启动 $service_name (环境: $ENV)..."
nohup java -jar -Dspring.profiles.active=$ENV target/$service_name-1.0.0.jar > ../logs/$service_name-$ENV.log 2>&1 &
# 记录PID
echo $! > ../logs/$service_name.pid
echo "$service_name 启动完成,PID: $!"
echo "📋 日志文件: logs/$service_name-$ENV.log"
cd ..
# 等待服务启动
sleep 3
}
# 创建日志目录
mkdir -p logs
# 检查基础服务
check_services
# 服务列表
services=(
"emotion-user:19001:用户服务"
"emotion-ai:19002:AI服务"
"emotion-websocket:19007:WebSocket聊天服务"
"emotion-gateway:19000:网关服务"
)
echo "🚀 开始启动核心服务 (环境: $ENV)..."
# 按顺序启动服务
for service_info in "${services[@]}"; do
IFS=':' read -r service_name port description <<< "$service_info"
start_service "$service_name" "$port" "$description"
done
echo ""
echo "🎉 核心服务启动完成!"
echo ""
echo "📋 服务列表:"
for service_info in "${services[@]}"; do
IFS=':' read -r service_name port description <<< "$service_info"
echo " $description: http://localhost:$port"
done
echo ""
echo "📝 使用 './stop-services.sh' 停止所有服务"
echo "📝 查看日志: tail -f logs/服务名-$ENV.log"
# 等待服务完全启动
echo ""
echo "📊 等待服务完全启动..."
sleep 15
# 检查服务状态
echo "📊 检查服务状态..."
for service_info in "${services[@]}"; do
IFS=':' read -r service_name port description <<< "$service_info"
if curl -s http://localhost:$port/actuator/health >/dev/null 2>&1; then
echo "$description 运行正常"
else
echo "⚠️ $description 可能未完全启动,请查看日志: tail -f logs/$service_name-$ENV.log"
fi
done
echo ""
echo "🎉 启动完成!环境: $ENV"
echo ""
echo "使用方法:"
echo " ./start-services.sh # 使用默认local环境启动"
echo " ./start-services.sh dev # 使用dev环境启动"
echo " ./start-services.sh prod # 使用prod环境启动"