PM2 +流星环境设置

时间:2013-12-11 15:03:52

标签: meteor

我正在尝试将Meteor设置为使用pm2(https://github.com/Unitech/pm2)而不是永远作为节点进程监视器。我没有幸运获得pm2进程需要看到Meteor应用程序的环境变量。

这是我的流程:

export MONGO_URL="mongodb://localhost:27017/meteor"
export PORT=4000
export ROOT_URL="https://beta.example.com/"
pm2 start main.js --name MyMeteorApp

在pm2的错误日志中,我看到我的Meteor应用程序抱怨找不到MONGO_URL

为了使用pm2,是否需要执行导出的特定方式?

5 个答案:

答案 0 :(得分:8)

您可以创建process.json(PM2 fleet配置文件)文件,您可以在其中指定环境变量。

例如:

{
  "apps": [
    {
      "name": "MyMeteorApp",
      "script": "./main.js",
      "log_date_format": "YYYY-MM-DD",
      "exec_mode": "fork_mode",
      "env": {
        "PORT": 4000,
        "MONGO_URL": "mongodb://localhost:27017/meteor",
        "ROOT_URL": "https://beta.example.com/"
      }
    }
  ]
}

开头:pm2 start processes.json

答案 1 :(得分:2)

去看看pm2-meteor。应该帮助你生成pm2-env.json。

$ npm i -g pm2-meteor
$ cd myMeteorProject
$ pm2-meteor --settings meteor-settings.json

答案 2 :(得分:2)

  

截至2018年

我遇到了这样一个大问题,但现在已经解决了问题。

当您使用PM2进行Meteor App的自定义生产时,您只需将文件process.json放在bundle目录中并运行以下命令,

pm2 start process.json

以下是我希望在生产环境中作为process.json传递的文件METEOR_SETTINGS的参数,

{
  "apps": [
    {
      "name": "My APP",
      "script": "./main.js",
      "log_date_format": "YYYY-MM-DD",
      "exec_mode": "fork_mode",
      "env": {
        "PORT": 3000,
        "MONGO_URL": "mongodb://username:password@127.0.0.1:27017/dbname",
        "ROOT_URL": "http://hostname/",
        "METEOR_SETTINGS": {
            "MAIL_URL": "smtps://<your username>:<your password>@smtp.gmail.com:465",
            "AUTHKEY": "185938A0asmD231231231231e4992",
            "HOSTNAME": "some example",
            "public": {
                "COMPANY_NAME": "Some Company Name"
            }
        }
      }
    }
  ]
}

因此,在上面的代码中,您可以看到我如何设置METEOR_SETTINGS

答案 3 :(得分:1)

pm2有点奇怪。但是这样的事情可以起作用

pm2 kill
MONGO_URL="mongodb://localhost:27017/meteor" PORT=4000 ROOT_URL="https://beta.example.com/" pm2 start app.js --name MyMeteorApp

之所以发生这种情况是因为pm2将所有内容包装到自己的新进程中,无法查看原始环境的变量。我认为还有一种方法可以将环境变量放在JSON文件中,但我不确定文档的确有点空白

答案 4 :(得分:-3)

在做了一些挖掘后,我找到了正确的答案。在pm2中,您放置在JSON任务定义中的任何不是保留关键字之一的任何内容都将导出到您在pm2中作为​​环境变量运行的进程。