| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- #!/bin/bash
- # =====================================================
- # 芋道后端开发模式启动脚本
- # 使用方法: ./start-backend.sh [profile]
- # profile: local(默认), dev, test
- # =====================================================
- set -e
- # 颜色定义
- GREEN='\033[0;32m'
- YELLOW='\033[1;33m'
- BLUE='\033[0;34m'
- RED='\033[0;31m'
- NC='\033[0m'
- # 项目根目录
- PROJECT_ROOT="$(cd "$(dirname "$0")" && pwd)"
- # 默认配置
- PROFILE="${1:-dev}"
- JAVA_OPTS="-Xms512m -Xmx1024m"
- echo -e "${BLUE}========================================${NC}"
- echo -e "${BLUE} 芋道后端 - 开发模式启动${NC}"
- echo -e "${BLUE}========================================${NC}"
- echo ""
- # 检查Redis服务状态
- check_redis() {
- if redis-cli ping > /dev/null 2>&1; then
- return 0
- else
- return 1
- fi
- }
- # 启动Redis服务
- start_redis() {
- echo -e "${YELLOW}正在启动Redis服务...${NC}"
-
- if [[ "$OSTYPE" == "darwin"* ]]; then
- # macOS
- if command -v brew &> /dev/null; then
- brew services start redis 2>/dev/null || redis-server --daemonize yes
- elif command -v redis-server &> /dev/null; then
- redis-server --daemonize yes
- else
- echo -e "${RED}错误: 未找到Redis,请先安装: brew install redis${NC}"
- exit 1
- fi
- elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
- # Linux
- if command -v systemctl &> /dev/null; then
- sudo systemctl start redis 2>/dev/null || sudo systemctl start redis-server 2>/dev/null || redis-server --daemonize yes
- elif command -v service &> /dev/null; then
- sudo service redis-server start 2>/dev/null || redis-server --daemonize yes
- elif command -v redis-server &> /dev/null; then
- redis-server --daemonize yes
- else
- echo -e "${RED}错误: 未找到Redis,请先安装${NC}"
- echo -e "${YELLOW}Ubuntu/Debian: sudo apt-get install redis-server${NC}"
- echo -e "${YELLOW}CentOS/RHEL: sudo yum install redis${NC}"
- exit 1
- fi
- else
- if command -v redis-server &> /dev/null; then
- redis-server --daemonize yes
- else
- echo -e "${RED}错误: 未找到Redis,请手动安装并启动${NC}"
- exit 1
- fi
- fi
-
- # 等待Redis启动
- for i in {1..10}; do
- if check_redis; then
- echo -e "${GREEN}✓ Redis服务启动成功${NC}"
- return 0
- fi
- sleep 1
- done
-
- echo -e "${RED}错误: Redis服务启动超时${NC}"
- exit 1
- }
- # 检查并确保Redis运行
- ensure_redis() {
- echo -e "${YELLOW}检查Redis服务...${NC}"
- if check_redis; then
- echo -e "${GREEN}✓ Redis服务已运行${NC}"
- else
- echo -e "${YELLOW}✗ Redis服务未运行${NC}"
- start_redis
- fi
- echo ""
- }
- # 检查本地模块是否已安装
- check_local_modules() {
- # 检查 yudao-common 是否存在于本地仓库
- if [ ! -d ~/.m2/repository/cn/iocoder/boot/yudao-common ]; then
- echo -e "${YELLOW}检测到首次运行,需要先编译安装本地模块...${NC}"
- echo -e "${YELLOW}这可能需要几分钟时间,请耐心等待...${NC}"
- echo ""
- cd "$PROJECT_ROOT"
- mvn clean install -DskipTests
- echo ""
- echo -e "${GREEN}✓ 本地模块安装完成${NC}"
- echo ""
- fi
- }
- # 启动服务
- start_server() {
- echo -e "${YELLOW}配置环境: ${PROFILE}${NC}"
- echo -e "${YELLOW}JVM 参数: ${JAVA_OPTS}${NC}"
- echo ""
- echo -e "${GREEN}========================================${NC}"
- echo -e "${GREEN} 后端服务启动中...${NC}"
- echo -e "${GREEN} 访问地址: http://localhost:48080${NC}"
- echo -e "${GREEN} API 文档: http://localhost:48080/doc.html${NC}"
- echo -e "${GREEN} 按 Ctrl+C 停止服务${NC}"
- echo -e "${GREEN}========================================${NC}"
- echo ""
- cd "$PROJECT_ROOT/yudao-server"
- mvn spring-boot:run \
- -Dspring-boot.run.profiles="$PROFILE" \
- -Dspring-boot.run.jvmArguments="$JAVA_OPTS"
- }
- # 主流程
- ensure_redis
- check_local_modules
- start_server
|