hulai-website/deployment/部署步骤.md

3.0 KiB

呼籁旅行官网 · 部署步骤

部署到 https://www.1814.love。这是 Nuxt 3 纯 SSR 应用,要在服务器上重新构建。

⚠️ 访问/验收一律用 www.1814.love,别用裸域 1814.love:裸域是双 A 记录(1.182.108.58 + 47.105.95.198),会漂移到 1.182 上的 Gitea;www 只解析到 47 的官网 nginx,才是正确入口。

一键部署(推荐)

在 Git Bash 里:

cd /d/work2/hulai-website/deployment
bash deploy.sh            # 部署 master 最新
bash deploy.sh <提交号>    # 或部署指定提交

脚本自动做完:备份数据库/.env → 服务器 git pull 最新代码 → npm ci + npm run build → 重启 PM2 → 验收

线上形态(速查)

应用所在服务器 1.182.108.58(不是 47.105.95.198
项目目录 /opt/gw/hulai-website(是完整 git clone,分支 master
框架 / 渲染 Nuxt 3,纯 SSRnuxt build 产物 .output/server/index.mjs
运行 PM2 hulai-websitefork,监听 *:9005,Node v20
访问链路 1814.love47 nginx1.182.108.58:9002nginx127.0.0.1:9005PM2 node
Node 版本 v20/usr/bin/node不像筛选器要 v22
nginx 配置 前端在 47 hl-website.conf;9002 在 1.182 /etc/nginx/sites-available/gw

⚠️ 绝不覆盖的运行时数据(脚本已保护)

数据 位置 说明
SQLite 数据库 server/database/hulai.db*(含 -wal/-shm 官网表单/内容数据,在持续写入
内容/上传图 public/images/ public/uploads/ public/旅拍照片/ 用户上传与内容图,nginx 直接 alias 服务
环境变量 .env(可选) 企业微信 webhook key,当前未配

部署用 git pull 更新代码,这些是 git 未跟踪或不受影响的运行时文件,不会被覆盖;脚本额外先备份数据库再动手。

手动部署(不想用脚本时)

ssh root@1.182.108.58
cd /opt/gw/hulai-website

# 1. 备份数据库
cp -a server/database/ /root/hulai-db-bak-$(date +%s)/

# 2. 拉代码 + 构建 + 重启
git fetch origin && git checkout master && git pull --ff-only
npm ci
npm run build
pm2 restart hulai-website && pm2 save

# 3. 验收
curl http://127.0.0.1:9005/
curl https://www.1814.love/

回滚

ssh root@1.182.108.58
cd /opt/gw/hulai-website
git checkout -q <旧提交号>
npm run build
pm2 restart hulai-website

常见问题

  • 官网打不开:先 ssh root@1.182.108.58 'pm2 status; curl 127.0.0.1:9005/';node 没起来或 9005 不通 → 重启 PM2。
  • 改完没变化:没重新 npm run build + pm2 restart。SSR 每次请求即时渲染,但必须 rebuild 才用新代码。
  • build 很慢/占内存Nuxt 全量 build 需几分钟,服务器内存够31G,耐心等。
  • 数据库相关功能异常:确认 server/database/hulai.db* 没被部署动到(脚本已保护);异常时从 .deploy-backups/<时间戳>/ 还原。