PM2 (Node.js) not listening on specified port

2020-05-23 03:53发布

I am trying to get a Node/Express application up and running on PM2. I can start the application fine with this command: npm start

This starts the app fine on port 3000.

If I try to start the application with pm2 start app.js I get the following in the log:

{ online: true, success: true, pid: 10714, pm2_version: '0.8.15' }
2014-06-12T19:52:06.789Z : [[[[ PM2/God daemon launched ]]]]
2014-06-12T19:52:06.800Z : RPC interface [READY] on 6666:localhost
2014-06-12T19:52:06.801Z : BUS system [READY] on  6667:localhost
2014-06-12T19:52:06.978Z : Entering in node wrap logic (cluster_mode) for script     /home/user/test/app.js
2014-06-12T19:52:07.115Z : /home/user/test/app.js - id0 worker online

In my bin/www file I have the following specifying the port:

app.set('port', process.env.PORT || 3000);

I have also tried running export PORT=3000

As well as the following in bin/www:

app.set('port', 3000);

If I run a netstat -an | grep 3000 I get nothing back.

4条回答
ら.Afraid
2楼-- · 2020-05-23 04:04

The answer to this, for anyone using Express, is to run this command:

pm2 start ./bin/www

I had been running pm2 start app.js which did not work.

查看更多
三岁会撩人
3楼-- · 2020-05-23 04:08

Your app.set('port'... calls are not directly relevant. app.set is just a place to store key/value settings but it provides zero functionality in and of itself. What you want to look at is where you call app.listen since that function is what accepts a port as an argument.

查看更多
霸刀☆藐视天下
4楼-- · 2020-05-23 04:15

I use this

pm2.json

[
{
  "exec_mode": "fork_mode",
  "cwd" : "/opt/acme_service",
  "script": "acme_service.js",
  "name": "acme_service",
  "restart_delay":"9000",
  "port"       : 8081,
  "node_args": [ "--acme" ],
  "error_file": "/var/log/acme_service.err.log",
  "out_file": "/var/log/acme_service.out.log"
}
]

"port" : 8081 - accept port connection. same in app

var server = app.listen(8081 , '0.0.0.0');
查看更多
放荡不羁爱自由
5楼-- · 2020-05-23 04:19

I had a similar problem, with nginx configured as proxy server I couldn't see the Express app running by PM2. When I removed my ~/.pm2 folder it worked.

查看更多
登录 后发表回答