PM2环境variablescaching
我在Ubuntu 16.04上运行PM2,似乎环境variables正在被caching。 有没有办法看到哪些环境variablesPM2正在使用。 它可以以某种方式看到的环境variables不再在我的terminal会话中可用echo $VAR_NAME
。
我创build了这样的环境variables:
export VAR_NAME=value
使用以下命令删除环境variables:
unset VAR_NAME
不工作PM2固执地坚持环境variables – 即使在各种重启和ssh会话之后。 渲染我困惑: – /
有没有办法刷新PM2正在使用的环境variables? 或者至less看看它知道哪些环境variables?
更新到原来的答案:
如果环境variables的值是预先设置的,例如在开发,暂存和生产中使用不同的envvariables,则有一个使用process.json
文件的选项。
下面是一个node.js应用程序的示例:
{ "apps" : [{ "env": { // in this section you would list variables that you // want available in all cases "NODE_PATH": "..." }, "env_development": { "CONFIG": "dev.conf.json", "NODE_ENV": "development" }, "env_production" : { "CONFIG": "conf.json", "NODE_ENV": "production" }, "exec_mode": "fork", // or cluster if that's what you want "name" : "my_app", "script" : "/var/my_app/app.js", //srcipt's path "watch" : false // don't restart on file changes }] }
使用env的可能值定义此文件后,可以通过重新启动应用程序来切换环境,如下所示:
-
正常启动应用程序:
pm2 start process.json --env development
-
当你想切换到不同的env:
pm2 restart process.json --env production
有关process.json
和可能的选项的更多信息: PM2 – Process File
原始答案:
你必须先杀死pm2。
pm2 kill
pm2 start app.js
PM2保存启动时读取的环境variables,它不会每次重新读取它们的值。
我search了很快,发现这个问题在github上: https : //github.com/Unitech/pm2/issues/83,Unitech的答案证实了这一点。
在这个特别的评论: https : //github.com/Unitech/pm2/issues/83#issuecomment-29837221
Unitech说:
是的,这在“cluster_mode”中是正常的。 当pm2将你的代码包装到自己的上下文(以及自己的variables)时,你会得到启动pm2时已经存在的内容。