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