一、问题简介
develop 和 production 运行的环境有很大差别,譬如两个环境下的数据库地址、用户名等都是不一样的,硬编码这些参数不是好的选择,通过环境变量可以很好解决。
二、解决方案
1、生成配置文件
-
pm2 init simple
// 生成默认配置文件:ecosystem.config.js module.exports = { apps : [{ name : "app1", script : "./app.js" }] }
2、添加环境变量配置
// ecosystem.config.js
module.exports = {
apps: [{
name: "app1",
script: "./app.js",
env: {
"ip": "192.168.1.2",
"NODE_ENV": "development"
},
env_production: {
"ip": "192.168.1.1",
"NODE_ENV": "production",
}
env_develop: {
"ip": "192.168.1.2",
"NODE_ENV": "develop",
}
}]
}
3、调用环境变量
-
env
默认环境变量,只要启动应用:pm2 start ecosystem.config.js
,那么 ip 变量就会被传递给应用 app1 -
env_production
对应调用方式是:pm2 start ecosystem.config.js --env production
-
env_develop
对应调用方式是:pm2 start ecosystem.config.js --env develop
- 规则是 :配置文件中定义
env_
开头的属性,那么就用--env
参数调用。
4、--update-env
: 更新环境变量
NODE_ENV=production pm2 restart web-interface --update-env