#!/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 ""