【问题标题】:Define PM2 script path with environment variable使用环境变量定义 PM2 脚本路径
【发布时间】:2017-09-08 10:12:20
【问题描述】:

我正在构建一个简单的暂存 CI 环境,我在其中通过环境变量 APP_PATH 定义可运行 Node 应用程序的路径。

是否可以在进程配置文件中告诉 PM2 按照 APP_PATH 变量中的路径查找启动脚本?

像这样:

{
  "apps": [
    {
      "name": "my_app",
      "script": "$APP_PATH/app.js"
    }
  ]
}

目前,我在启动上述配置时收到来自 PM2 的[PM2][ERROR] script not found : 消息。

简而言之: PM2 无法解析script 属性中定义的环境变量。有什么办法可以克服吗?

【问题讨论】:

  • 您想让 PM2 在重启时自动启动您的应用?
  • @Prasanthchinja 是的,这就是计划

标签: javascript node.js continuous-integration environment-variables pm2


【解决方案1】:

如果你需要做同样的方法。关注这个。

在您的根目录之外或您需要的任何地方创建一个 .json 文件。

servers.json

[{
  "name":"MyApp",
  "script":"/home/user/app/server.js",
  "instances":"3" //number of instances to start
},
{
  "name":"MySecondApp",
  "script":"/home/user/app2/server.js",
  "instances":"max" //to calculate your number of CPU cores available and run based on the core count
}]

然后使用pm2 start servers.json运行

这将使用提到的名称和实例启动两个应用程序。

或者

使用最新版本的 PM2,您无需编写任何脚本。只需执行一些命令即可。

第 1 步:首先根据需要创建 pm2 实例,例如现在需要运行多个实例或需要运行多少个不同的服务器。

我的在下面

一旦您的应用启动并像这样列出。

第 2 步:输入 pm2 startup。然后您将看到 pm2 自动生成的命令,它可以帮助您将其创建为服务。

第 3 步:您将看到需要以灰色阴影运行的命令。复制它并以 root 用户身份运行。

运行该命令后,您将看到如下结果。

第 4 步:运行pm2 save,以便将当前的 pm2 进程列表保存为启动脚本。

就是这样..

通过重新启动服务器进行测试并使用pm2 lspm2 status 进行检查。

如果您想再次更新 pm2 进程列表,请使用 pm2 update 这将获取当前进程列表并更新启动脚本。

希望对你有帮助!!!

【讨论】:

  • 感谢您的描述,但它没有回答我的问题。
  • 你正在使用一个过时的东西,但最新的有一些快速简单的方法来实现相同的功能,那么你可以继续使用最新的对吗?
  • 我知道我可以通过 JSON 配置和 CLI 命令进行应用设置和重新加载。我的问题是,如果我使用配置 JSON,则 script 属性中的 env var 无法解决。
  • 到目前为止我知道那是不可能的,要么你可以这样做stackoverflow.com/a/27090755/2148827你可以用 pm2 这种方法。
猜你喜欢
  • 2012-02-15
  • 2019-05-02
  • 1970-01-01
  • 2011-08-02
  • 2017-01-23
  • 1970-01-01
  • 2017-09-15
  • 1970-01-01
  • 2020-04-05
相关资源
最近更新 更多