如何在我的子脚本/进程中引用PM2的进程PORT分配?

时间:2016-11-20 22:12:06

标签: node.js pm2

我正在Ubunty上为我的node.js环境试验PM2,并想试着弄清楚如何获取命令行中指定的端口号,如下所示......

$pm2 start test.js --node-args "port=3001 sitename='first pm2 app'"

...然后在我的目标脚本(上例中的test.js)中使用该端口号作为我的.listen端口...例如:

    var express = require('express')
    var app = express()

    app.get('/', function (req, res) {
      res.send('Hello World!')
    })

    app.listen(PORT_NUM_HERE, function () {
      console.log('Example app listening on port ' + PORT_NUM_HERE + '!')
    })

我也看到使用PM2我可以使用配置文件来定义进程名称,端口等。如果我这样做,同样的问题,如何获取配置文件中使用的端口并在我的子脚本中使用它

示例配置文件:

{
  "apps": [
    {
      "name": "futurestudio-homepage",
      "script": "./homepage/server.js",
      "instances": 2,
      "exec_mode": "cluster",
      "env": {
        "NODE_ENV": "production",
        "PORT": "3000",
      }
    }
}

] }

1 个答案:

答案 0 :(得分:0)

在命令行上指定环境变量:

NODE_PORT=3100 pm2 start ./src/server.ts --name dev
可以使用process.jsonecosystem.config.js来配置

PM2。 The docs are here

这应该在端口3100上启动您的应用程序:

pm2 start ecosystem.config.js

ecosystem.config.js文件的内容:

// ecosystem.config.js
module.exports = {
  apps : [{
    name: "dev",
    script: "src/server.ts",
    cwd: "/root/api",
    env: {
        NODE_PORT:"3100",
        NODE_ENV:"development"
    }
  }]
}

添加,您可以通过在服务器上运行类似的代码来对其进行测试:

curl http://127.0.0.1:3100