[英]PM2 (Node.js) not listening on specified port
我正在尝试在 PM2 上启动并运行 Node/Express 应用程序。 我可以用这个命令很好地启动应用程序: npm start
这将在端口 3000 上正常启动应用程序。
如果我尝试使用pm2 start app.js
启动应用程序,我会在日志中得到以下信息:
{ 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
在我的 bin/www 文件中,我指定了以下端口:
app.set('port', process.env.PORT || 3000);
我也试过运行export PORT=3000
以及 bin/www 中的以下内容:
app.set('port', 3000);
如果我运行netstat -an | grep 3000
netstat -an | grep 3000
我一无所获。
对于任何使用 Express 的人来说,答案是运行以下命令:
pm2 start ./bin/www
我一直在运行pm2 start app.js
它不起作用。
你的app.set('port'...
调用并不直接相关app.set
只是一个存储键/值设置的地方,但它本身提供零功能。你想看的是你调用的地方app.listen
因为该函数接受端口作为参数。
我有一个类似的问题,将 nginx 配置为代理服务器,我看不到 PM2 运行的 Express 应用程序。 当我删除~/.pm2
文件夹时,它起作用了。
我用这个
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"
}
]
“端口”:8081 - 接受端口连接。 在应用程序中相同
var server = app.listen(8081 , '0.0.0.0');
就我而言,它正在侦听特定端口,但由于某种原因,我的界面找不到主机/端口,然后我安装了 NGINX 并将/etc/nginx/sites-enabled/
上的默认值设置为:
server {
listen 80 default_server;
listen [::]:80 default_server;
root /var/www/html;
server_name _;
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection “upgrade”;
proxy_max_temp_file_size 0;
proxy_pass ip:port/; <<<<<<<<< Change the IP and port >>>>>>>>>
proxy_redirect off;
proxy_read_timeout 240s;
}
}
检查最后几行。 反向代理工作。
Obs: /etc/nginx/sites-enabled/default
包含在/etc/nginx/nginx.conf
,然后用作 NGINX 的配置
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.