Skip to Content

部署指南

本文档提供生产环境部署的快速参考。完整的部署架构请查看技术架构 - 部署架构

快速部署

1. 构建生产版本

# 构建所有应用 pnpm build # 构建特定应用 pnpm --filter @procure/admin build pnpm --filter @procure/api build pnpm --filter @procure/doc build

2. 环境变量配置

在部署平台(Vercel, Railway, 自建服务器等)设置环境变量:

必需变量:

NODE_ENV=production DATABASE_URL=postgresql://user:password@host:5432/dbname JWT_SECRET=your-jwt-secret-key SESSION_SECRET=your-session-secret-key

应用特定变量:

# Admin 应用 NEXT_PUBLIC_APP_URL=https://your-domain.com NEXT_PUBLIC_API_URL=https://api.your-domain.com # API 应用 API_PORT=3001 CORS_ORIGIN=https://your-domain.com

3. 数据库迁移

# 生产环境运行迁移(使用 migrate,不要用 push) pnpm db:migrate deploy

⚠️ 警告:生产环境不要使用 db:push,始终使用 db:migrate 创建版本化的迁移。

Docker 部署

使用 Docker Compose

# 1. 构建镜像 docker-compose build # 2. 启动服务 docker-compose up -d # 3. 查看日志 docker-compose logs -f # 4. 停止服务 docker-compose down

查看详细的 Docker 开发指南

平台部署

Vercel(推荐用于前端)

  1. 连接 GitHub 仓库
  2. 配置根目录为 apps/admin
  3. 设置环境变量
  4. 自动部署

Railway(推荐用于 API)

  1. 连接 GitHub 仓库
  2. 添加 PostgreSQL 数据库
  3. 配置环境变量
  4. 部署 NestJS 应用

自建服务器

参考完整的部署架构文档了解:

  • Docker Compose 配置
  • Nginx 反向代理
  • SSL 证书配置
  • 监控和日志

生产环境最佳实践

1. 数据库

  • ✅ 使用版本化迁移(db:migrate
  • ✅ 定期备份数据库
  • ✅ 配置连接池
  • ✅ 启用慢查询日志
  • ❌ 不要使用 db:push

2. 安全

  • ✅ 使用强密码和密钥
  • ✅ 启用 HTTPS
  • ✅ 配置 CORS 白名单
  • ✅ 定期更新依赖
  • ❌ 不要在代码中硬编码敏感信息

3. 性能

  • ✅ 启用缓存(Redis)
  • ✅ 使用 CDN 加速静态资源
  • ✅ 配置数据库索引
  • ✅ 启用 gzip 压缩

4. 监控

  • ✅ 配置健康检查端点
  • ✅ 监控服务器资源使用
  • ✅ 记录关键业务指标
  • ✅ 设置告警通知

故障排查

应用无法启动

检查清单:

  1. 环境变量是否正确配置
  2. 数据库连接是否正常
  3. 端口是否被占用
  4. 查看应用日志

数据库连接失败

# 测试数据库连接 psql $DATABASE_URL # 检查网络连接 ping database-host # 查看连接池状态 # 在应用中添加日志

内存不足

# 增加 Node.js 内存限制 NODE_OPTIONS=--max-old-space-size=4096 # 或在 package.json 中配置 "scripts": { "start": "node --max-old-space-size=4096 dist/main.js" }

相关文档


需要帮助? 查看完整的部署架构文档或联系运维团队。