refactor: 重命名 backend-single 目录为 server

This commit is contained in:
2026-06-27 17:23:53 +08:00
parent 8daf51301a
commit 0d77d76858
464 changed files with 0 additions and 0 deletions
+180
View File
@@ -0,0 +1,180 @@
#!/bin/bash
# 情绪博物馆后端服务部署脚本
# 部署到远程服务器 101.200.208.45
set -e
# 配置变量
APP_NAME="emotion-museum-single"
JAR_NAME="backend-single-1.0.0.jar"
JAR_PATH="./target/${JAR_NAME}"
# 远程服务器配置
REMOTE_HOST="101.200.208.45"
REMOTE_USER="root"
REMOTE_DIR="/data/programs/emotion-museum"
REMOTE_LOG_DIR="/data/logs/emotion-museum"
REMOTE_JAR_NAME="emotion-single-1.0.0.jar"
SPRING_PROFILE="test"
# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
log_info() {
echo -e "${GREEN}[INFO]${NC} $1"
}
log_warn() {
echo -e "${YELLOW}[WARN]${NC} $1"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# 构建项目
build_project() {
log_info "开始构建项目..."
if ! command -v mvn > /dev/null 2>&1; then
log_error "未找到Maven命令,请确保已安装Maven"
exit 1
fi
log_info "执行: mvn clean package -DskipTests"
if ! mvn clean package -DskipTests; then
log_error "项目构建失败"
exit 1
fi
if [ ! -f "$JAR_PATH" ]; then
log_error "项目构建失败,未找到JAR文件: $JAR_PATH"
exit 1
fi
log_info "✅ 项目构建成功: $JAR_PATH"
log_info "文件大小: $(ls -lh $JAR_PATH | awk '{print $5}')"
}
# 检查JAR文件
check_jar() {
if [ ! -f "$JAR_PATH" ]; then
log_error "JAR文件不存在: $JAR_PATH"
log_info "请先执行打包命令: mvn clean package"
exit 1
fi
log_info "JAR文件检查通过: $JAR_PATH"
}
# 显示服务状态
show_status() {
log_info "=== 服务信息 ==="
log_info "服务器地址: $REMOTE_HOST"
log_info "部署目录: $REMOTE_DIR"
log_info "日志目录: $REMOTE_LOG_DIR"
log_info "Spring Profile: $SPRING_PROFILE"
log_info "检查服务状态..."
ssh $REMOTE_USER@$REMOTE_HOST "ps aux | grep $REMOTE_JAR_NAME | grep -v grep" || log_info "服务未运行"
}
# 部署到远程服务器
# 参数: $1 - 可选,指定要上传的额外文件
deploy() {
UPLOAD_SCRIPT="$1"
log_info "开始部署到 $REMOTE_HOST..."
build_project
check_jar
# 创建远程目录
log_info "创建远程目录..."
ssh $REMOTE_USER@$REMOTE_HOST "mkdir -p $REMOTE_DIR" || { log_error "创建远程目录失败"; exit 1; }
ssh $REMOTE_USER@$REMOTE_HOST "mkdir -p $REMOTE_LOG_DIR" || { log_error "创建远程日志目录失败"; exit 1; }
# 上传JAR文件
log_info "上传JAR文件到远程服务器..."
log_info "本地文件: $JAR_PATH"
log_info "远程路径: $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/$REMOTE_JAR_NAME"
if ! scp "$JAR_PATH" $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/$REMOTE_JAR_NAME; then
log_error "上传JAR文件失败"
exit 1
fi
log_info "✅ JAR文件上传成功"
# 验证远程文件
log_info "验证远程文件..."
ssh $REMOTE_USER@$REMOTE_HOST "ls -lh $REMOTE_DIR/$REMOTE_JAR_NAME" || { log_error "远程文件验证失败"; exit 1; }
# 上传额外文件
if [ -n "$UPLOAD_SCRIPT" ] && [ -f "$UPLOAD_SCRIPT" ]; then
log_info "上传文件到远程服务器: $UPLOAD_SCRIPT"
if ! scp "$UPLOAD_SCRIPT" $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/; then
log_error "上传文件失败: $UPLOAD_SCRIPT"
exit 1
fi
log_info "✅ 文件上传成功: $UPLOAD_SCRIPT"
REMOTE_FILENAME=$(basename "$UPLOAD_SCRIPT")
if [[ "$REMOTE_FILENAME" == *.sh ]]; then
ssh $REMOTE_USER@$REMOTE_HOST "chmod +x $REMOTE_DIR/$REMOTE_FILENAME"
fi
fi
# 执行远程部署
log_info "在远程服务器上执行部署..."
if ! ssh $REMOTE_USER@$REMOTE_HOST "cd $REMOTE_DIR && ./deploy-server.sh $SPRING_PROFILE"; then
log_error "远程部署脚本执行失败"
exit 1
fi
log_info "✅ 部署完成!"
show_status
}
# 打印使用说明
print_usage() {
echo "用法: $0 [命令] [参数]"
echo ""
echo "命令:"
echo " (无参数) - 部署到远程服务器(默认)"
echo " [文件名] - 部署并上传指定文件(如 deploy-server.sh"
echo " build - 仅构建项目"
echo " status - 查看远程服务状态"
echo ""
echo "示例:"
echo " $0 # 部署到远程服务器"
echo " $0 deploy-server.sh # 同时上传部署脚本"
echo " $0 build # 仅构建项目"
echo " $0 status # 查看服务状态"
}
# 主逻辑
case "${1:-}" in
"")
deploy
;;
"build")
build_project
;;
"status")
show_status
;;
"help"|"-h"|"--help")
print_usage
;;
*)
# 如果参数是文件,则上传该文件
if [ -f "$1" ]; then
deploy "$1"
else
deploy "$1"
fi
;;
esac