55 lines
1.5 KiB
Bash
Executable File
55 lines
1.5 KiB
Bash
Executable File
#!/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" |