在上一篇https://jasonzk.com/nestjs/nesttsmysql/文章中,我们详细介绍了如何搭建开发NestJS+MySQL+TypeScript环境。本文将在此基础上,详细介绍如何区分开发环境和线上环境,不同配置的加载以及如何使用PM2在生产环境中部署NestJS项目。
使用环境变量区分环境
首先,我们需要在项目根目录下创建两个环境变量文件:.env.development
和.env.production
,分别用于开发环境和生产环境,并安装dotenv。
.env.development
.env.production
install dotenv
在src
目录下创建一个config
目录,并在其中创建一个configuration.ts
文件,用于加载环境变量:
配置不同的数据库连接
接下来,在src/app.module.ts
中,使用ConfigModule
和TypeOrmModule
加载数据库配置:
加载不同的配置文件
为了确保配置文件的加载,ConfigModule
的forRoot
方法需要正确设置isGlobal
和load
选项,TypeOrmModule
的forRootAsync
方法用于异步加载配置,并使用ConfigService
获取数据库连接信息。
在开发环境中启动项目
在开发环境中,使用Nest CLI的start
命令启动项目:
在生产环境中部署项目
在生产环境中,我们推荐使用PM2来管理和运行NestJS项目。
安装PM2
首先,全局安装PM2:
配置PM2
在项目根目录下创建一个ecosystem.config.js
文件,配置PM2:
构建项目
在启动项目之前,需要构建项目:
使用PM2启动项目
使用以下命令启动项目:
该命令会根据ecosystem.config.js
中的配置,以生产环境启动NestJS项目。
总结
本文详细介绍了如何区分开发环境和生产环境及其配置,包括使用环境变量、配置不同的数据库连接、加载不同的配置文件以及如何使用PM2在生产环境中部署NestJS项目。通过合理区分和配置不同的环境,可以更好地管理和维护项目,提升开发和部署效率。