feat: 项目初始化及当前全部内容提交
This commit is contained in:
Executable
+186
@@ -0,0 +1,186 @@
|
||||
#!/bin/bash
|
||||
|
||||
# 情感博物馆本地启动脚本
|
||||
# 使用 application-local.yml 配置文件启动所有服务
|
||||
|
||||
echo "=========================================="
|
||||
echo "情感博物馆本地服务启动脚本"
|
||||
echo "=========================================="
|
||||
|
||||
# 检查Java环境
|
||||
if ! command -v java &> /dev/null; then
|
||||
echo "❌ Java未安装或未配置到PATH"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 检查Maven环境
|
||||
if ! command -v mvn &> /dev/null; then
|
||||
echo "❌ Maven未安装或未配置到PATH"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✅ Java和Maven环境检查通过"
|
||||
|
||||
# 创建日志目录
|
||||
mkdir -p logs
|
||||
|
||||
# 服务列表
|
||||
services=(
|
||||
"emotion-user:19001:用户服务"
|
||||
"emotion-ai:19002:AI服务"
|
||||
"emotion-record:19003:记录服务"
|
||||
"emotion-growth:19004:成长服务"
|
||||
"emotion-explore:19005:探索服务"
|
||||
"emotion-reward:19006:奖励服务"
|
||||
"emotion-stats:19007:统计服务"
|
||||
"emotion-gateway:19000:网关服务"
|
||||
)
|
||||
|
||||
# 启动函数
|
||||
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..."
|
||||
nohup java -jar -Dspring.profiles.active=local target/$service_name-1.0.0.jar > ../logs/$service_name-local.log 2>&1 &
|
||||
|
||||
# 记录PID
|
||||
echo $! > ../logs/$service_name.pid
|
||||
|
||||
echo "✅ $service_name 启动完成,PID: $!"
|
||||
echo "📋 日志文件: logs/$service_name-local.log"
|
||||
|
||||
cd ..
|
||||
|
||||
# 等待服务启动
|
||||
sleep 3
|
||||
}
|
||||
|
||||
# 停止所有服务函数
|
||||
stop_all_services() {
|
||||
echo "🛑 停止所有服务..."
|
||||
|
||||
for pid_file in logs/*.pid; do
|
||||
if [ -f "$pid_file" ]; then
|
||||
pid=$(cat "$pid_file")
|
||||
service_name=$(basename "$pid_file" .pid)
|
||||
|
||||
if kill -0 $pid 2>/dev/null; then
|
||||
echo "🔄 停止 $service_name (PID: $pid)..."
|
||||
kill $pid
|
||||
rm "$pid_file"
|
||||
else
|
||||
echo "⚠️ $service_name 进程不存在,清理PID文件"
|
||||
rm "$pid_file"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
echo "✅ 所有服务已停止"
|
||||
}
|
||||
|
||||
# 检查服务状态函数
|
||||
check_services() {
|
||||
echo "📊 检查服务状态..."
|
||||
echo "----------------------------------------"
|
||||
|
||||
for service_info in "${services[@]}"; do
|
||||
IFS=':' read -r service_name port description <<< "$service_info"
|
||||
|
||||
pid_file="logs/$service_name.pid"
|
||||
if [ -f "$pid_file" ]; then
|
||||
pid=$(cat "$pid_file")
|
||||
if kill -0 $pid 2>/dev/null; then
|
||||
if curl -s http://localhost:$port/actuator/health >/dev/null 2>&1; then
|
||||
echo "✅ $description ($service_name:$port) - 运行中"
|
||||
else
|
||||
echo "⚠️ $description ($service_name:$port) - 启动中..."
|
||||
fi
|
||||
else
|
||||
echo "❌ $description ($service_name:$port) - 已停止"
|
||||
rm "$pid_file"
|
||||
fi
|
||||
else
|
||||
echo "❌ $description ($service_name:$port) - 未启动"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# 主菜单
|
||||
case "$1" in
|
||||
"start")
|
||||
echo "🚀 开始启动所有服务..."
|
||||
|
||||
# 按顺序启动服务(先启动基础服务,最后启动网关)
|
||||
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 "📝 使用 './start-local.sh status' 检查服务状态"
|
||||
echo "📝 使用 './start-local.sh stop' 停止所有服务"
|
||||
;;
|
||||
|
||||
"stop")
|
||||
stop_all_services
|
||||
;;
|
||||
|
||||
"status")
|
||||
check_services
|
||||
;;
|
||||
|
||||
"restart")
|
||||
echo "🔄 重启所有服务..."
|
||||
stop_all_services
|
||||
sleep 5
|
||||
$0 start
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "用法: $0 {start|stop|status|restart}"
|
||||
echo ""
|
||||
echo "命令说明:"
|
||||
echo " start - 启动所有服务"
|
||||
echo " stop - 停止所有服务"
|
||||
echo " status - 检查服务状态"
|
||||
echo " restart - 重启所有服务"
|
||||
echo ""
|
||||
echo "示例:"
|
||||
echo " $0 start # 启动所有服务"
|
||||
echo " $0 status # 检查服务状态"
|
||||
echo " $0 stop # 停止所有服务"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
Reference in New Issue
Block a user