#!/bin/bash # 管理后台部署脚本 # 使用方法: ./scripts/deploy-admin.sh set -e echo "🚀 开始部署管理后台..." # 配置变量 ADMIN_DIR="/home/gitea/www/photography-admin" BACKUP_DIR="/home/gitea/backups/photography-admin" BUILD_DIR="./admin/dist" PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" # 检查当前目录 if [ ! -d "$PROJECT_DIR/admin" ]; then echo "❌ 错误: 请在项目根目录运行此脚本" exit 1 fi # 进入项目目录 cd "$PROJECT_DIR" # 构建管理后台项目 echo "🏗️ 构建管理后台项目..." cd admin npm install npm run build # 检查构建结果 if [ ! -d "dist" ]; then echo "❌ 构建失败: dist 目录不存在" exit 1 fi cd .. # 创建备份 echo "📦 创建当前版本备份..." mkdir -p "$BACKUP_DIR" if [ -d "$ADMIN_DIR" ] && [ "$(ls -A $ADMIN_DIR)" ]; then tar -czf "$BACKUP_DIR/admin-$(date +%Y%m%d-%H%M%S).tar.gz" -C "$ADMIN_DIR" . echo "✅ 备份完成" fi # 创建部署目录 echo "📁 准备部署目录..." mkdir -p "$ADMIN_DIR" # 部署新版本 echo "🔄 部署新版本..." rsync -av --delete "$BUILD_DIR/" "$ADMIN_DIR/" # 设置权限 echo "🔐 设置文件权限..." chown -R gitea:gitea "$ADMIN_DIR" chmod -R 755 "$ADMIN_DIR" # 设置正确的文件权限 find "$ADMIN_DIR" -type f -name "*.html" -o -name "*.js" -o -name "*.css" -o -name "*.json" | xargs chmod 644 find "$ADMIN_DIR" -type f -name "*.png" -o -name "*.jpg" -o -name "*.jpeg" -o -name "*.gif" -o -name "*.svg" -o -name "*.ico" | xargs chmod 644 find "$ADMIN_DIR" -type d | xargs chmod 755 # 重新加载 Web 服务器 echo "🔄 重新加载 Caddy..." sudo systemctl reload caddy # 清理旧备份 (保留最近5个) echo "🧹 清理旧备份..." cd "$BACKUP_DIR" ls -t admin-*.tar.gz | tail -n +6 | xargs -r rm echo "✅ 管理后台部署完成!" echo "📁 部署路径: $ADMIN_DIR" echo "🌐 访问地址: https://admin.photography.iriver.top" echo "📊 部署统计:" echo " 文件数量: $(find $ADMIN_DIR -type f | wc -l)" echo " 目录大小: $(du -sh $ADMIN_DIR | cut -f1)"