当前位置: 首页 > 知识库问答 >
问题:

在端口80上运行的节点服务器使用PM2时出错

通鸿风
2023-03-14

我有一个在 aws ec2 实例上运行的 Express 节点服务器。当我跑步时

sudo node server.js

服务器运行在端口80上,当我向服务器发出http请求时,它工作正常。然而,当我跑步时

sudo pm2 start server.js

每当我发出请求时,都会出现以下错误

{ Error: listen EACCES: permission denied 0.0.0.0:80
at Server.setupListenHandle [as _listen2] (net.js:1242:19)
at listenInCluster (net.js:1307:12)
at Server.listen (net.js:1395:7)
at Object.<anonymous> (/home/ubuntu/evercampus-server/server.js:19:8)
at Module._compile (internal/modules/cjs/loader.js:816:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:827:10)
at Module.load (internal/modules/cjs/loader.js:685:32)
at Function.Module._load (internal/modules/cjs/loader.js:620:12)
at Object.<anonymous> (/usr/lib/node_modules/pm2/lib/ProcessContainerFork.js:32:23)
at Module._compile (internal/modules/cjs/loader.js:816:30)
code: 'EACCES',
errno: 'EACCES',
syscall: 'listen',
address: '0.0.0.0',
port: 80 }

我尝试使用pm2在端口5000上运行,效果良好。

我对为什么sudo节点服务器.js工作但sudo pm2启动服务器.js不起作用感到非常困惑。

我在另一篇文章(在端口80上通过PM2运行Node应用程序)中看到了关于在端口5000上运行服务器并将请求从端口80转发到5000的内容。但是,我想了解为什么pm2在端口80上不起作用。

共有1个答案

董子平
2023-03-14

因为PM2将调用没有sudo的节点。是的,PM2将在root下运行,但这并不一定意味着实际的节点进程也将在root下运行。

 类似资料:
  • 问题内容: 我有一个通过端口5000运行的Flask服务器,很好。我可以在http://example.com:5000上访问它 但是是否可以在http://example.com上简单地访问它?我假设这意味着我必须将端口从5000更改为80。但是当我在Flask上尝试使用该端口时,运行该错误消息。 连续lsof -i :80收益 我需要先杀死这些进程吗?这样安全吗?还是有另一种方法可以让Flas

  • 我试图实现的是将Angular 9应用程序部署到具有Linux操作系统的Azure应用程序服务中(Windows不适合我,因为Linux更便宜)。我使用Node 14 runtime创建了Linux web应用程序。部署应用程序后,我会看到Azure默认网页。我试图解决这个问题,正如这里所描述的 我在具有节点14运行时的Linux web app上执行的步骤: > 我加了这个 pm2服务 /hom

  • 问题内容: 我的目标是在端口80上运行Node.js。这是因为我发现node.js被某些网络阻止,这些网络不允许来自任何其他端口的流量。 看来最好的方法是通过Node.js代理Apache。我已经尝试使用node-http- proxy 来做到这一点,但是我没有任何运气。 我正在使用的代码在这里: 但是我一直收到端口80的错误“地址正在使用”。我一定做错了。 如何使用node-http-proxy

  • 我是新来的。js并尝试运行以下培训示例,以在我的mac(OS X Yosemite 10.10.3)上设置基本http服务器: 我在执行代码时遇到以下错误: $节点http.jsevents.js:85抛出er;//未处理的'错误'事件^错误:在导出时监听EADDRINUSE。_errnoException(util.js:746: 11)在服务器。_listen2(net.js:1156: 14

  • 我在同一个文件夹(tut67)中创建了这个javascript文件,index.html,about.html,contact.html,services.html,但它仍然给出了每个html文件的错误。(我使用MacBook Air)。 代码如下::: 常量about=fs.readfileSync('./about.html'); const contact=fs.readfileSync('

  • 我在库伯内特斯集群中运行3个节点。每个节点都有相同的Pod myApp。我使用NodePort类型创建一个服务,以便所有3个节点都可以从外部访问。服务yaml如下所示 假设3个节点的节点IP端口为: 1.192.168.18.1:30010 2.192.68.18.2:30010 3.192.18.18.3:30010 我的问题是:<br>1.如果所有请求都来自IP为(192.168.18.1:3