构建部署
这篇笔记我们学习如何构建部署NextJS工程,以及如何进行多环境配置。
以生产模式运行NextJS
NextJS工程的npm script中,包含了命令build
和start
,分别对应构建和启动服务端。
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "next lint"
}
执行命令npm run build
后,NextJS会将构建结果输出到工程根目录的.next
文件夹中。此时我们执行npm start
即可运行NextJS服务端了。
使用pm2启动工程
在实际生产环境中,NodeJS一般以pm2
、nodemon
等守护进程方式部署,这些NodeJS进程管理器会在NodeJS进程意外终止及时拉起进程,避免生产环境不可用。
pm2 start npm -- start
执行上述启动命令,即可以pm2
守护进程方式启动NextJS。
如果使用Docker部署,我们需要以前台方式创建pm2
进程,因此启动命令可以写为:
pm2 start npm --no-daemon -- start
多副本部署
多副本部署时有一点需要注意,我们应构建一次部署到多个服务器上,而不是在多个服务器上分别构建,建议通过Docker等方式进行部署。
多环境配置
另一个常见的需求是多环境配置,我们的一些配置项可能在开发、测试、生产环境有不同的参数,NextJS中可以通过环境变量配置文件进行配置,这些配置依赖于NodeJS的环境变量NODE_ENV
。这里我们直接介绍配置的最佳实践,NodeJS工程的NODE_ENV
支持几个标准的环境名:development
、test
、production
,相关的配置文件也要遵循这些标准命名,不要打破这个约定。我们的工程根目录中,可以设置如下几个配置文件。
|_ .env
|_ .env.development
|_ .env.production
|_ .env.local
我们记住以下3条规则:
- 如果我们以
npm run dev
启动工程,NextJS会默认设置当前环境为development
,如果我们以npm start
启动工程,NextJS会默认设置当前环境为production
。 - 多个配置文件的优先级从高到低依次是
.env.local
、.env.$(NODE_ENV)
、.env
,如果存在相同的环境变量配置,高优先级的配置会覆盖低优先级的配置。 .env
存放各个环境通用的配置,.env.$(NODE_ENV)
存放环境单独的配置,.env.local
存放密码等敏感信息,它不应提交到版本控制系统。
至此,我们应该可以正确的进行多环境配置了。
作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。