#!/bin/bash # 服务器配置 SERVER="123.57.93.143" USER="root" REMOTE_DIR="/home/media-front" BACKUP_DIR="$REMOTE_DIR/backup" TIMESTAMP=$(date +%Y%m%d_%H%M%S) # 本地构建 echo "Building project..." npm run build # 检查构建是否成功 if [ ! -d "dist" ]; then echo "Build failed! dist directory not found." exit 1 fi # 创建部署包 echo "Creating deployment package..." tar -czf dist.tar.gz dist/ # 创建远程目录 echo "Creating remote directories..." ssh $USER@$SERVER "mkdir -p $REMOTE_DIR $BACKUP_DIR" # 如果远程目录存在部署文件,先备份 echo "Backing up existing deployment..." ssh $USER@$SERVER "if [ -d $REMOTE_DIR/dist ]; then \ tar -czf $BACKUP_DIR/dist_backup_$TIMESTAMP.tar.gz $REMOTE_DIR/dist && \ rm -rf $REMOTE_DIR/dist; \ fi" # 上传新的部署包 echo "Uploading new deployment package..." scp dist.tar.gz $USER@$SERVER:$REMOTE_DIR/ # 解压部署包 echo "Extracting deployment package..." ssh $USER@$SERVER "cd $REMOTE_DIR && \ tar -xzf dist.tar.gz && \ rm dist.tar.gz" # 清理本地部署包 echo "Cleaning up local deployment package..." rm dist.tar.gz echo "Deployment completed successfully!" echo "Your application is now deployed to $REMOTE_DIR/dist" echo "A backup has been created at $BACKUP_DIR/dist_backup_$TIMESTAMP.tar.gz" # 清理旧的备份(保留最近10个) echo "Cleaning up old backups..." ssh $USER@$SERVER "cd $BACKUP_DIR && ls -t dist_backup_*.tar.gz | tail -n +11 | xargs rm -f 2>/dev/null || true"