| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- #!/bin/bash
- ###############################################################################
- # 脚本名称:label_web_deploy.sh
- # 功能描述:部署前端应用到 Nginx,包含备份旧版本、替换新版本、清理临时文件
- # 使用说明:
- # 1. 修改下方的【配置区域】变量以匹配实际服务器路径
- # 2. 确保服务器已安装 zip 和 unzip 工具 (yum install zip unzip -y)
- # 3. 赋予执行权限:chmod +x label_web_deploy.sh
- # 4. 执行脚本:./label_web_deploy.sh
- ###############################################################################
- # ======================= 【配置区域】 =======================
- # 部署临时目录 (存放待部署的 lq_label_dist.zip)
- put_tmp_directory="/home/lq/lq_workspace/LQLabelServer/deploy_tmp"
- # Nginx 部署目录 (网站根目录)
- nginx_html_directory="/home/lq/nginx/html_app"
- # 备份目录 (存放旧版本压缩包)
- nginx_html_bak="/home/lq/lq_workspace/deploy_workspace/deploy_bak/LQLabelServer"
- # 目标文件夹名称 (nginx 部署目录下需要备份和覆盖的文件夹名)
- TARGET_FOLDER_NAME="lq_label"
- # ======================= 【脚本逻辑】 =======================
- # 1. 定义时间变量 (格式:yyyy-MM-dd_HH-MM-SS,避免冒号导致文件名问题)
- TIMESTAMP=$(date +"%Y-%m-%d_%H-%M-%S")
- # 2. 定义备份文件统一名称 (修正了需求中文件名不一致的问题,确保能正确删除)
- BACKUP_ZIP_NAME="lq_label_bak_${TIMESTAMP}.zip"
- # 颜色定义
- RED='\033[0;31m'
- GREEN='\033[0;32m'
- YELLOW='\033[1;33m'
- NC='\033[0m' # No Color
- echo -e "${YELLOW}=========================================${NC}"
- echo -e "${YELLOW}开始打包前端应用,时间:${TIMESTAMP}${NC}"
- echo -e "${YELLOW}=========================================${NC}"
- ./web_label_build_zip.sh
- # --- 前置检查 ---
- if [ ! -d "$put_tmp_directory" ]; then
- echo -e "${RED}错误:部署临时目录不存在:$put_tmp_directory${NC}"
- exit 1
- fi
- if [ ! -f "${put_tmp_directory}/lq_label_dist.zip" ]; then
- echo -e "${RED}错误:未找到待部署包:${put_tmp_directory}/lq_label_dist.zip${NC}"
- exit 1
- fi
- if [ ! -d "$nginx_html_directory" ]; then
- echo -e "${RED}错误:Nginx 部署目录不存在:$nginx_html_directory${NC}"
- exit 1
- fi
- echo -e "${YELLOW}=========================================${NC}"
- echo -e "${YELLOW}开始部署前端应用,时间:${TIMESTAMP}${NC}"
- echo -e "${YELLOW}=========================================${NC}"
- # 创建备份目录(如果不存在)
- mkdir -p "$nginx_html_bak"
- # --- 2.1 备份现有版本 ---
- # 进入 Nginx 目录
- cd "$nginx_html_directory" || exit 1
- # 检查是否存在需要备份的文件夹
- if [ -d "$TARGET_FOLDER_NAME" ]; then
- echo -e "${GREEN}[2.1] 正在压缩备份 ${TARGET_FOLDER_NAME} ...${NC}"
- # 使用 zip 递归压缩,文件名统一使用 BACKUP_ZIP_NAME
- zip -r "$BACKUP_ZIP_NAME" "$TARGET_FOLDER_NAME"
-
- if [ $? -ne 0 ]; then
- echo -e "${RED}错误:压缩备份失败${NC}"
- exit 1
- fi
- else
- echo -e "${YELLOW}[2.1] 警告:未找到 ${TARGET_FOLDER_NAME} 目录,跳过备份压缩${NC}"
- # 即使没有旧版本,也创建一个空标记或继续,这里选择继续
- touch "$BACKUP_ZIP_NAME" # 创建一个空文件占位,防止后续脚本报错,或者干脆不创建
- BACKUP_ZIP_NAME="" # 标记无需后续处理
- fi
- # --- 2.2 将压缩好的文件 Copy 到备份目录 ---
- if [ -n "$BACKUP_ZIP_NAME" ] && [ -f "$BACKUP_ZIP_NAME" ]; then
- echo -e "${GREEN}[2.2] 正在将备份文件复制到 ${nginx_html_bak} ...${NC}"
- # 需求中 2.2 文件名略有不同,这里为了逻辑通顺,保持原名复制,或按需重命名
- # 这里执行复制操作
- cp "$BACKUP_ZIP_NAME" "$nginx_html_bak/"
-
- if [ $? -ne 0 ]; then
- echo -e "${RED}错误:复制备份文件失败${NC}"
- exit 1
- fi
- fi
- # --- 2.3 删除工作目录下压缩的文件 ---
- if [ -n "$BACKUP_ZIP_NAME" ] && [ -f "$BACKUP_ZIP_NAME" ]; then
- echo -e "${GREEN}[2.3] 正在清理工作目录下的备份压缩包 ...${NC}"
- rm -f "$BACKUP_ZIP_NAME"
- fi
- # --- 2.4 Copy 部署临时目录下 lq_label_dist.zip 到 nginx 部署目录下 ---
- echo -e "${GREEN}[2.4] 正在上传新版本包到部署目录 ...${NC}"
- cp "${put_tmp_directory}/lq_label_dist.zip" "$nginx_html_directory/"
- if [ $? -ne 0 ]; then
- echo -e "${RED}错误:复制新版本包失败${NC}"
- exit 1
- fi
- # --- 2.5 使用 unzip 解压缩,完成后删除 lq_label_dist.zip ---
- echo -e "${GREEN}[2.5] 正在解压缩新版本并清理 ...${NC}"
- cd "$nginx_html_directory" || exit 1
- # -o 表示覆盖现有文件而不提示
- unzip -o lq_label_dist.zip
- if [ $? -ne 0 ]; then
- echo -e "${RED}错误:解压缩失败${NC}"
- exit 1
- fi
- # 删除部署包
- rm -f lq_label_dist.zip
- echo -e "${GREEN}=========================================${NC}"
- echo -e "${GREEN}部署完成!${NC}"
- echo -e "${GREEN}=========================================${NC}"
|