39 lines
1.4 KiB
Bash
39 lines
1.4 KiB
Bash
|
|
#!/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"
|