Blitz.js生产部署完整指南:环境变量、数据库配置与上线清单
【免费下载链接】blitz⚡️ The Missing Fullstack Toolkit for Next.js项目地址: https://gitcode.com/gh_mirrors/bl/blitz
Blitz.js 生产部署是每位开发者从开发走向上线必须跨过的一道坎。Blitz.js 是专为 Next.js 打造的"缺失的全栈工具包"(The Missing Fullstack Toolkit for Next.js),内置 RPC、认证与 Prisma 集成。本文带你走完 Blitz.js 上线前的三大核心环节:环境变量配置、数据库迁移部署,并附上一份可直接勾选的生产环境上线清单,帮你快速、安全地把应用推上生产服务器。
一、先搞懂:Blitz.js 生产部署包含哪些步骤?
一次完整的 Blitz.js 生产部署,本质上就是四件事:
- 构建应用——
blitz codegen生成 RPC/查询代码,再交给next build编译; - 数据库就绪—— 用
prisma generate+prisma migrate deploy把表结构同步到生产库; - 配置环境变量—— 生产密钥、数据库连接串等,全部通过
.env体系注入; - 启动生产服务——
next start托管编译产物。
官方示例应用 apps/toolkit-app/ 的 package.json 中,这几个脚本正是标准姿势:
buildapp:pnpm blitz codegen && pnpm prisma generate && next buildprisma:start:prisma generate && prisma migrate deploystart:next start
💡 记住这条主线,后面每一步都是它的展开。
二、环境变量:Blitz.js 如何加载 .env 文件
生产环境最常见的事故,就出在环境变量上。Blitz.js 的 loadEnvConfig 函数定义了清晰的加载优先级(越靠前优先级越高):
| 优先级 | 文件 | 用途 |
|---|---|---|
| 1 | .env.production.local | 本机个人覆盖,绝不提交 |
| 2 | .env.production | 生产环境公共配置 |
| 3 | .env.local | 本机临时配置,绝不提交 |
| 4 | .env | 兜底默认值 |
三个关键机制值得新手注意:
- 后加载不覆盖先加载:已存在的变量不会被低优先级文件覆盖,避免"本地配置偷偷污染生产";
- 变量可互相引用:内部使用
dotenv-expand,支持DATABASE_URL=postgres://user:${DB_PASS}@host/db这类写法; - 生产模式识别:
APP_ENV或NODE_ENV决定按哪套规则加载,start.ts 中NODE_ENV === "production"时即以prod环境运行。
生产环境必须准备的变量
| 变量 | 说明 |
|---|---|
DATABASE_URL | 生产数据库连接串(Postgres/MySQL) |
BLITZ_SECRET/SESSION_SECRET | 会话加密密钥,用openssl rand -base64 32生成 |
REACT_APP_PUBLIC_API_URL | 前端访问 API 的公网地址 |
邮件服务相关(如SMTP_*) | 若使用了密码重置等邮件功能 |
⚠️安全铁律:任何
.local文件和含密钥的.env.production都加入.gitignore,密钥只通过部署平台的环境变量注入。
三、数据库配置:从 SQLite 切换到生产数据库
1. 为什么开发用的 SQLite 不能上生产
示例项目 db/schema.prisma 默认是sqlite(file:./db.sqlite)——它适合本地开发,但生产环境建议切换PostgreSQL:
- 支持事务并发与连接池;
- 支持枚举类型(schema 中
Token.type的注释就提醒了这一点); - 便于备份、只读副本与扩容。
2. 迁移与部署的标准流程
Blitz.js 完全复用 Prisma 的工作流,生产服务器上按顺序执行:
pnpm prisma generate # 生成 Prisma Client pnpm prisma migrate deploy # 按 migrations/ 目录同步表结构注意:生产环境用migrate deploy(只应用已有迁移),而开发环境用migrate dev(会生成新迁移文件)。所有迁移 SQL 都保存在db/migrations/下,例如 20220427214932_/ 目录,保证环境间表结构完全一致。
3. 连接生产数据库
项目通过 db/index.ts 导出全局增强的PrismaClient实例(enhancePrisma会让它自动继承 RPC 的会话用户上下文)。你只需保证DATABASE_URL指向生产库,代码层无需任何改动。
如果需要插入初始数据(如管理员账号),Blitz.js 提供了种子命令,其实现见 db.ts:执行blitz db seed会运行db/seeds.ts(参考 seeds.ts)。
四、上线清单:逐项勾选,一次部署到位 ✅
🚀构建阶段
- 执行
blitz codegen确认 RPC 代码生成成功 next build无报错,产物目录.next完整- 生产依赖安装(
npm ci/pnpm install --prod视需求)
🔐环境变量
DATABASE_URL、SESSION_SECRET等已注入,且不出现在代码仓库NODE_ENV=production已设置- 本地无任何
.env.local残留到服务器
🗄️数据库
prisma migrate deploy执行成功,表结构与开发环境一致- 生产数据库账号使用最小权限(仅 DML,无 DROP)
- 已配置自动备份策略
🌐服务与验证
next start(或blitz start,支持--port/--hostname参数)启动成功- 注册、登录、找回密码等认证流程实测通过
- RPC 接口(
/api/rpc)可用,页面数据正常加载 - 反向代理(Nginx)已配置 HTTPS 与 gzip
📌 上线后若需查库排障,可临时使用
pnpm prisma studio打开可视化界面(仅限内网环境)。
五、常见问题速查
Q1:生产环境页面白屏或 RPC 404?先确认blitz codegen是否在构建前执行过——RPC 路由代码是生成产物,漏了这步是最常见原因。
Q2:迁移在服务器上失败怎么办?检查服务器上是否存在未提交的手动改库记录;生产环境禁止prisma db push,一切以migrations/目录为准。
Q3:如何在生产修改端口?blitz start直接透传 Next 参数(见 start.ts):blitz start --port 8080 --hostname 0.0.0.0。
总结
Blitz.js 生产部署可以概括为一句话:codegen 构建 + migrate deploy 同步数据库 + .env 注入密钥 + next start 上线。配合本文的上线清单逐项检查,你的 Blitz.js 应用就能平稳地从开发环境走进生产环境。祝部署顺利!⚡️
【免费下载链接】blitz⚡️ The Missing Fullstack Toolkit for Next.js项目地址: https://gitcode.com/gh_mirrors/bl/blitz
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考