AIGC/aigc-ui/deploy-to-server.sh

93 lines
2.3 KiB
Bash
Raw Permalink Normal View History

2026-02-27 14:37:19 +08:00
#!/bin/bash
# AIGC 前端自动部署到服务器脚本
# 使用方法: ./deploy-to-server.sh [server_user@server_ip] [deploy_path]
# 示例: ./deploy-to-server.sh root@192.168.1.100 /var/www/aigc
set -e
# 颜色输出
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color
# 参数检查
if [ $# -lt 2 ]; then
echo -e "${RED}使用方法: $0 [server_user@server_ip] [deploy_path]${NC}"
echo "示例: $0 root@192.168.1.100 /var/www/aigc"
exit 1
fi
SERVER=$1
DEPLOY_PATH=$2
echo "======================================"
echo "AIGC 前端自动部署到服务器"
echo "======================================"
echo "服务器: ${SERVER}"
echo "部署路径: ${DEPLOY_PATH}"
echo ""
# 1. 本地构建
echo -e "${YELLOW}[1/5] 本地构建生产版本...${NC}"
npm install
npm run build
echo -e "${GREEN}✓ 构建完成${NC}"
echo ""
# 2. 打包
echo -e "${YELLOW}[2/5] 打包构建产物...${NC}"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
PACKAGE_NAME="aigc-ui-${TIMESTAMP}.tar.gz"
tar -czf ${PACKAGE_NAME} dist/
echo -e "${GREEN}✓ 打包完成: ${PACKAGE_NAME}${NC}"
echo ""
# 3. 上传到服务器
echo -e "${YELLOW}[3/5] 上传到服务器...${NC}"
scp ${PACKAGE_NAME} ${SERVER}:/tmp/
echo -e "${GREEN}✓ 上传完成${NC}"
echo ""
# 4. 在服务器上部署
echo -e "${YELLOW}[4/5] 在服务器上部署...${NC}"
ssh ${SERVER} << EOF
set -e
# 创建部署目录
mkdir -p ${DEPLOY_PATH}
# 备份旧版本(如果存在)
if [ -d "${DEPLOY_PATH}/dist" ]; then
echo "备份旧版本..."
mv ${DEPLOY_PATH}/dist ${DEPLOY_PATH}/dist.backup.${TIMESTAMP}
fi
# 解压新版本
echo "解压新版本..."
tar -xzf /tmp/${PACKAGE_NAME} -C ${DEPLOY_PATH}
# 清理临时文件
rm -f /tmp/${PACKAGE_NAME}
echo "部署完成!"
EOF
echo -e "${GREEN}✓ 服务器部署完成${NC}"
echo ""
# 5. 清理本地临时文件
echo -e "${YELLOW}[5/5] 清理本地临时文件...${NC}"
rm -f ${PACKAGE_NAME}
echo -e "${GREEN}✓ 清理完成${NC}"
echo ""
echo "======================================"
echo -e "${GREEN}部署成功!${NC}"
echo "======================================"
echo ""
echo "访问地址: http://your-server-ip"
echo ""
echo "注意: 请确保 Nginx 已配置指向 ${DEPLOY_PATH}/dist"
echo ""