You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
RuoYi-Vue/scripts/deploy/backend-deploy.sh

102 lines
2.3 KiB

#!/bin/bash
# ============================================
# RuoYi-Vue 后端部署脚本
# 使用方式: ./scripts/deploy/backend-deploy.sh
# ============================================
set -e
# 配置
APP_NAME="ruoyi-admin"
DEPLOY_DIR="/opt/ruoyi"
JAR_FILE="${DEPLOY_DIR}/${APP_NAME}.jar"
BACKUP_DIR="${DEPLOY_DIR}/backup"
LOG_DIR="${DEPLOY_DIR}/logs"
PID_FILE="${DEPLOY_DIR}/${APP_NAME}.pid"
# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
echo_info() {
echo -e "${GREEN}[INFO]${NC} $1"
}
echo_warn() {
echo -e "${YELLOW}[WARN]${NC} $1"
}
echo_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# 检查 JAR 文件
if [ ! -f "$1" ]; then
echo_error "JAR 文件不存在: $1"
exit 1
fi
echo_info "========================================"
echo_info "RuoYi-Vue 后端部署"
echo_info "========================================"
# 创建目录
mkdir -p $DEPLOY_DIR $BACKUP_DIR $LOG_DIR
# 备份现有版本
if [ -f "$JAR_FILE" ]; then
echo_info "备份现有版本..."
cp $JAR_FILE ${BACKUP_DIR}/${APP_NAME}-$(date +%Y%m%d_%H%M%S).jar
fi
# 停止现有服务
if [ -f "$PID_FILE" ]; then
PID=$(cat $PID_FILE)
if ps -p $PID > /dev/null 2>&1; then
echo_info "停止现有服务 (PID: $PID)..."
kill $PID
sleep 5
# 强制停止
if ps -p $PID > /dev/null 2>&1; then
echo_warn "服务未正常停止,强制终止..."
kill -9 $PID
fi
fi
fi
# 部署新版本
echo_info "部署新版本..."
cp $1 $JAR_FILE
# 启动服务
echo_info "启动服务..."
nohup java -jar \
-Dspring.profiles.active=prod \
-Xms512m -Xmx1024m \
$JAR_FILE \
> ${LOG_DIR}/app.log 2>&1 &
echo $! > $PID_FILE
echo_info "服务已启动 (PID: $(cat $PID_FILE))"
# 等待启动
echo_info "等待服务启动..."
sleep 10
# 健康检查
if curl -f http://localhost:8080/actuator/health > /dev/null 2>&1; then
echo_info "✅ 部署成功!服务运行正常"
else
echo_error "❌ 部署失败!服务未正常启动"
echo_error "请查看日志: tail -f ${LOG_DIR}/app.log"
exit 1
fi
echo_info "========================================"
echo_info "部署完成"
echo_info "日志: ${LOG_DIR}/app.log"
echo_info "========================================"