1. 为什么选择NestJS进行服务器部署
NestJS作为一款渐进式Node.js框架,近年来在企业级应用开发中越来越受欢迎。它采用模块化架构设计,内置TypeScript支持,完美融合了OOP(面向对象编程)、FP(函数式编程)和FRP(函数响应式编程)的优势。我在实际项目中发现,相比Express或Koa这类基础框架,NestJS更适合构建复杂、可维护的后端服务。
部署NestJS项目时,我们通常会遇到几个典型场景:开发环境调试、测试环境验证和生产环境发布。不同环境对部署的要求差异很大——开发环境需要热重载和快速迭代,生产环境则更关注性能优化和稳定性保障。接下来我将分享从代码打包到线上运维的全套实战经验。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 部署前的准备工作
2.1 环境依赖检查
在开始部署前,需要确保服务器满足以下基础要求:
- Node.js版本:建议使用LTS版本(如16.x/18.x),可以通过
node -v验证 - 包管理器:npm或yarn(推荐yarn,因其确定性安装更适合生产环境)
- 进程管理工具:PM2或Docker(根据部署策略选择)
- 数据库客户端:如果使用MySQL/PostgreSQL等关系型数据库,需安装对应客户端库
注意:永远不要在生产环境使用
npm install --production=false,这会导致安装devDependencies中的调试工具,可能引入安全风险。
2.2 项目构建配置优化
在nest-cli.json中,建议添加以下生产环境专用配置:
json复制{
"compilerOptions": {
"deleteOutDir": true,
"webpack": false, // 生产环境关闭webpack提升构建速度
"tsConfigPath": "tsconfig.build.json"
}
}
同时修改tsconfig.build.json:
json复制{
"extends": "./tsconfig.json",
"exclude": ["node_modules", "test", "**/*.spec.ts"]
}
3. 生产环境部署实战
3.1 构建与打包
推荐的分步构建流程:
-
清理旧构建产物:
bash复制rm -rf dist && mkdir dist -
安装生产依赖(使用精确版本锁定):
bash复制yarn install --frozen-lockfile --production=true -
执行TypeScript编译:
bash复制
yarn build -
复制必要静态资源:
bash复制cp -r public dist/public && cp package.json dist/
3.2 进程管理方案选型
方案A:PM2集群模式
安装PM2后,创建ecosystem.config.js:
javascript复制module.exports = {
apps: [{
name: 'api-server',
script: 'dist/main.js',
instances: 'max', // 根据CPU核心数自动扩展
exec_mode: 'cluster',
env_production: {
NODE_ENV: 'production',
PORT: 3000
}
}]
}
启动命令:
bash复制pm2 start ecosystem.config.js --env production
