#!/usr/bin/env bash # ============================================================ # www 部署脚本:上传构建产物与部署配置到正式服务器 # 上传内容:.output/public/、nginx.conf、docker-compose.yml # 目标:luxsin-api2:/data/project/dashboard/www # 用法:./scripts/deploy-www.sh # ============================================================ set -euo pipefail REMOTE_HOST="luxsin-api2" REMOTE_DIR="/data/project/dashboard/www" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" WWW_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)" # 本地需先完成静态构建(nuxt generate,ssr:false 产出 .output/public/index.html) if [ ! -f "${WWW_DIR}/.output/public/index.html" ]; then echo "❌ 本地缺少 ${WWW_DIR}/.output/public/index.html,请先执行:" echo " cd ${WWW_DIR} && pnpm generate" exit 1 fi echo "==> 确保远程目录存在" ssh "${REMOTE_HOST}" "mkdir -p ${REMOTE_DIR}/.output/public" echo "==> 同步 .output/public/(--delete:删除远端已失效的旧产物)" rsync -avz --delete -e ssh \ "${WWW_DIR}/.output/public/" "${REMOTE_HOST}:${REMOTE_DIR}/.output/public/" echo "==> 上传 nginx.conf / docker-compose.yml" rsync -avz -e ssh \ "${WWW_DIR}/nginx.conf" \ "${WWW_DIR}/docker-compose.yml" \ "${REMOTE_HOST}:${REMOTE_DIR}/" echo "✅ 上传完成:${REMOTE_HOST}:${REMOTE_DIR}" echo "下一步(在服务器上执行):" echo " cd ${REMOTE_DIR} && docker compose up -d"