PM2环境变量缓存

安德烈·韦尔穆伦

我在Ubuntu 16.04上运行PM2,似乎正在以某种方式缓存环境变量。有没有办法查看PM2正在使用哪些环境变量。它可以以某种方式看到的环境变量在我的终端会话中不再可用echo $VAR_NAME

我创建了这样的环境变量:

export VAR_NAME=value

使用以下方法删除环境变量:

unset VAR_NAME

不起作用PM2顽固地坚持使用环境变量-即使在各种重新启动和ssh会话之后也是如此。使我困惑:-/

有没有一种方法可以清除PM2使用的环境变量?或者至少看到它知道哪些环境变量?

奥马尔·阿尔卡迪(Omar Alqady)

更新为原始答案:

如果环境变量的值是预设的,例如在开发,登台和生产使用不同的env变量的情况下,则可以选择使用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值后,您可以通过重新启动应用程序来切换环境,如下所示:

  1. 正常启动应用程序: pm2 start process.json --env development

  2. 当您想切换到其他环境时: pm2 restart process.json --env production

有关更多信息process.json和可能的选项:PM2-处理文件


原始答案:

您必须先杀死pm2。

pm2 kill

pm2 start app.js

PM2会保留启动时读取的环境变量,它不会每次都重新读取它们的值。

我快速搜索它,并在github上发现了这个问题:https : //github.com/Unitech/pm2/issues/83,Unitech的回答证实了这一点。

在此特定评论中:https : //github.com/Unitech/pm2/issues/83#issuecomment-29837221

Unitech说:

是的,这在“ cluster_mode”中是正常的。当pm2将代码包装到他自己的上下文(和自己的变量)中时,您将获得启动pm2时已经存在的内容。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章