✨ 新增启动脚本: - start-full-project.sh: 完整的前后端启动脚本,含环境检查 - dev-start.sh: 开发环境快速启动脚本 - stop-full-project.sh: 停止所有服务的脚本 📖 新增文档: - STARTUP_GUIDE.md: 详细的启动指南和故障排除 - 更新 README.md: 添加项目结构说明和启动脚本介绍 🔧 功能特点: - ✅ 自动环境检查(Java、Node.js、MongoDB) - ✅ 智能进程管理和端口清理 - ✅ 详细的启动日志和状态检查 - ✅ 交互式和静默启动模式 - ✅ 完整的故障排除指南 🎯 适配新项目结构: - 后端:项目根目录 (Spring Boot) - 前端:frontend/ 子目录 (Vue.js) - 一键启动完整的前后端开发环境 📋 三种启动方式: 1. dev-start.sh - 开发快速启动 ⭐ 推荐 2. start-full-project.sh - 完整启动检查 3. 手动分别启动 - 调试使用 现在开发者只需一个命令即可启动完整的前后端开发环境!
102 lines
3.1 KiB
Bash
Executable File
102 lines
3.1 KiB
Bash
Executable File
#!/bin/bash
|
|
# JmalCloud 完整前后端停止脚本
|
|
|
|
set -e
|
|
|
|
# 颜色定义
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
BACKEND_PORT=${BACKEND_PORT:-8088}
|
|
FRONTEND_PORT=${FRONTEND_PORT:-9528}
|
|
|
|
echo -e "${BLUE}🛑 JmalCloud 服务停止脚本${NC}"
|
|
echo -e "${BLUE}=============================${NC}"
|
|
|
|
# 停止Java后端进程
|
|
echo -e "${YELLOW}🔧 停止后端服务...${NC}"
|
|
java_pids=$(ps aux | grep 'java.*spring-boot:run\|java.*clouddisk' | grep -v grep | awk '{print $2}')
|
|
if [ ! -z "$java_pids" ]; then
|
|
echo "发现Java进程: $java_pids"
|
|
echo $java_pids | xargs kill -15
|
|
sleep 3
|
|
|
|
# 检查是否还有进程存在
|
|
remaining_java=$(ps aux | grep 'java.*spring-boot:run\|java.*clouddisk' | grep -v grep | awk '{print $2}')
|
|
if [ ! -z "$remaining_java" ]; then
|
|
echo "强制终止Java进程: $remaining_java"
|
|
echo $remaining_java | xargs kill -9
|
|
fi
|
|
echo -e "${GREEN}✅ 后端服务已停止${NC}"
|
|
else
|
|
echo -e "${GREEN}✅ 未发现运行中的后端服务${NC}"
|
|
fi
|
|
|
|
# 停止Node.js前端进程
|
|
echo -e "${YELLOW}🎨 停止前端服务...${NC}"
|
|
node_pids=$(ps aux | grep 'node.*vue-cli-service\|npm.*dev' | grep -v grep | awk '{print $2}')
|
|
if [ ! -z "$node_pids" ]; then
|
|
echo "发现Node.js进程: $node_pids"
|
|
echo $node_pids | xargs kill -15
|
|
sleep 3
|
|
|
|
# 检查是否还有进程存在
|
|
remaining_node=$(ps aux | grep 'node.*vue-cli-service\|npm.*dev' | grep -v grep | awk '{print $2}')
|
|
if [ ! -z "$remaining_node" ]; then
|
|
echo "强制终止Node.js进程: $remaining_node"
|
|
echo $remaining_node | xargs kill -9
|
|
fi
|
|
echo -e "${GREEN}✅ 前端服务已停止${NC}"
|
|
else
|
|
echo -e "${GREEN}✅ 未发现运行中的前端服务${NC}"
|
|
fi
|
|
|
|
# 清理端口占用
|
|
echo -e "${YELLOW}🧹 清理端口占用...${NC}"
|
|
for port in $BACKEND_PORT $FRONTEND_PORT; do
|
|
pid=$(lsof -ti:$port 2>/dev/null || true)
|
|
if [ ! -z "$pid" ]; then
|
|
echo "清理端口 $port 占用进程: $pid"
|
|
kill -9 $pid 2>/dev/null || true
|
|
echo -e "${GREEN}✅ 端口 $port 已清理${NC}"
|
|
fi
|
|
done
|
|
|
|
# 清理日志文件(可选)
|
|
echo -e "${YELLOW}🗑️ 清理日志文件...${NC}"
|
|
if [ -f "backend.log" ]; then
|
|
> backend.log
|
|
echo -e "${GREEN}✅ 后端日志已清理${NC}"
|
|
fi
|
|
|
|
if [ -f "frontend.log" ]; then
|
|
> frontend.log
|
|
echo -e "${GREEN}✅ 前端日志已清理${NC}"
|
|
fi
|
|
|
|
echo -e "${GREEN}🎉 所有服务已停止!${NC}"
|
|
echo -e "${BLUE}=============================${NC}"
|
|
echo -e "${GREEN}📋 状态检查:${NC}"
|
|
|
|
# 最终检查
|
|
backend_check=$(lsof -ti:$BACKEND_PORT 2>/dev/null || echo "")
|
|
frontend_check=$(lsof -ti:$FRONTEND_PORT 2>/dev/null || echo "")
|
|
|
|
if [ -z "$backend_check" ]; then
|
|
echo -e "${GREEN}✅ 后端端口 $BACKEND_PORT 已释放${NC}"
|
|
else
|
|
echo -e "${RED}❌ 后端端口 $BACKEND_PORT 仍被占用${NC}"
|
|
fi
|
|
|
|
if [ -z "$frontend_check" ]; then
|
|
echo -e "${GREEN}✅ 前端端口 $FRONTEND_PORT 已释放${NC}"
|
|
else
|
|
echo -e "${RED}❌ 前端端口 $FRONTEND_PORT 仍被占用${NC}"
|
|
fi
|
|
|
|
echo ""
|
|
echo -e "${YELLOW}💡 提示: 如需重新启动,请运行 ./start-full-project.sh${NC}"
|