deploy.md 2.9 KB

部署指南

概述

构建产物(platform/server/dist/platform/client/dist/)已纳入 Git。服务器只需 git pull 即可获取最新代码和构建产物,无需 scp 或打包。

本地:构建 + 推送

npm run build   # 构建 client + 编译 server
git add .
git commit -m "deploy: build"
git push

服务器首次部署

# 1. Clone 代码
git clone <repo-url> playableads-platform
cd playableads-platform

# 2. 安装依赖
npm run install:all

# 3. 创建日志目录
mkdir -p logs

# 4. 启动(PM2)
pm2 start ecosystem.config.js
pm2 save
pm2 startup   # 开机自启(按提示执行输出的命令)

服务器更新

cd playableads-platform
git pull
# 如果 package.json 有变动:
npm run install:all
# 重启
pm2 restart playableads-platform

自动化部署(Git Hook,可选)

在服务器上配置 post-receive hook,git push 后自动触发更新:

# 服务器上
cd playableads-platform

cat > .git/hooks/post-receive << 'EOF'
#!/bin/bash
unset GIT_DIR
cd /path/to/playableads-platform
git pull origin master
# 只在 package 有变动时安装
if git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD | grep -q "package.json"; then
  npm run install:all
fi
pm2 restart playableads-platform
EOF

chmod +x .git/hooks/post-receive

生产启动

# 本地验证
npm run build && node platform/server/dist/index.js

# 服务器(PM2)
pm2 start ecosystem.config.js
pm2 logs playableads-platform

PM2 常用命令

pm2 list                    # 查看所有进程
pm2 logs playableads-platform  # 查看日志
pm2 restart playableads-platform  # 重启
pm2 stop playableads-platform     # 停止
pm2 monit                   # 实时监控 CPU/内存
pm2 save                    # 保存当前进程列表(重启后恢复)
pm2 startup                 # 设置开机自启

Docker 部署(备选)

npm run docker:build   # 构建镜像
npm run docker:run     # 启动容器(:3001,storage 挂载)

# ECS
docker save playableads-platform | gzip > playableads-platform.tar.gz
scp playableads-platform.tar.gz ecs:~/
ssh ecs
docker load < playableads-platform.tar.gz
mkdir -p ~/playableads-storage
docker run -d -p 3001:3001 \
  -v ~/playableads-storage:/app/storage \
  --restart unless-stopped \
  --name playableads playableads-platform

环境变量

变量 默认值 说明
PORT 3001 服务端口
NODE_ENV production pm2 中通过 ecosystem.config.js 设置

运行时目录结构

playableads-platform/
├── platform/server/dist/   ← 编译产物(git 跟踪)
├── platform/client/dist/   ← 前端构建(git 跟踪)
├── storage/                ← 运行时数据(gitignore)
│   ├── data.db
│   └── creatives/
└── logs/                   ← PM2 日志