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.
102 lines
2.3 KiB
102 lines
2.3 KiB
|
3 weeks ago
|
#!/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 "========================================"
|