AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 602240
Accepted
modulitos
modulitos
Asked: 2014-06-06 20:50:38 +0800 CST2014-06-06 20:50:38 +0800 CST 2014-06-06 20:50:38 +0800 CST

如何在端口 80 上运行 node.js 应用程序?进程是否阻塞了我的端口?

  • 772

我相信我的远程实例上的端口 80 被阻止了,我正在尝试使用端口 80 运行 node.js 应用程序。我已经尝试了端口 3000 和 3002,两个端口都工作正常,但是运行时出现错误在端口 80 上。我怀疑端口 80 被我的下面的输出阻止了netstat -an,但是我怎样才能找到阻止下面端口 80 的地址的进程 ID?

[lucas@ecoinstance]~/node/nodetest1$ netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:3002            0.0.0.0:*               LISTEN     
tcp        0      0 127.0.0.1:27017         127.0.0.1:51108         ESTABLISHED
tcp        0      0 127.0.0.1:51106         127.0.0.1:27017         ESTABLISHED
tcp        0      0 127.0.0.1:27017         127.0.0.1:51106         ESTABLISHED
tcp        0      0 127.0.0.1:51107         127.0.0.1:27017         ESTABLISHED
tcp        0      0 10.240.241.116:3002     174.61.171.61:36583     TIME_WAIT  
tcp        0      0 127.0.0.1:27017         127.0.0.1:51109         ESTABLISHED
tcp        0      0 10.240.241.116:42423    169.254.169.254:80      ESTABLISHED
tcp        0      0 127.0.0.1:51108         127.0.0.1:27017         ESTABLISHED
tcp        0    532 10.240.241.116:22       174.61.171.61:56824     ESTABLISHED
tcp        0      0 127.0.0.1:27017         127.0.0.1:51107         ESTABLISHED
tcp        0      0 10.240.241.116:42412    169.254.169.254:80      ESTABLISHED
tcp        0      0 127.0.0.1:51109         127.0.0.1:27017         ESTABLISHED
tcp        0      0 127.0.0.1:51105         127.0.0.1:27017         ESTABLISHED
tcp        0      0 10.240.241.116:42422    169.254.169.254:80      TIME_WAIT  
tcp        0      0 127.0.0.1:27017         127.0.0.1:51105         ESTABLISHED
tcp6       0      0 :::22                   :::*                    LISTEN     
udp        0      0 0.0.0.0:49948           0.0.0.0:*                          
udp        0      0 0.0.0.0:68              0.0.0.0:*                          
udp        0      0 10.240.241.116:123      0.0.0.0:*                          
udp        0      0 127.0.0.1:123           0.0.0.0:*                          
udp        0      0 0.0.0.0:123             0.0.0.0:*                          
udp6       0      0 :::12151                :::*                               
udp6       0      0 :::123                  :::*                               
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ACC ]     STREAM     LISTENING     405680   /tmp/ssh-KdkxJfFLpKTC/agent.22
813
unix  2      [ ACC ]     STREAM     LISTENING     408230   /tmp/ssh-ofUeNNEwAqtP/agent.22
243
unix  2      [ ACC ]     STREAM     LISTENING     416227   /tmp/mongodb-27017.sock
unix  2      [ ACC ]     SEQPACKET  LISTENING     3692     /run/udev/control
unix  7      [ ]         DGRAM                    5286     /dev/log
unix  2      [ ACC ]     STREAM     LISTENING     5318     /var/run/acpid.socket
unix  2      [ ACC ]     STREAM     LISTENING     16170    /tmp//tmux-1000/default
unix  2      [ ACC ]     STREAM     LISTENING     414450   /var/run/dbus/system_bus_socke

这是尝试使用 node.js 在端口 80 上运行时的日志:

[lucas@ecoinstance]~/node/nodetest1$ npm start

> [email protected] start /home/lucas/node/nodetest1
> node ./bin/www


events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: listen EACCES
    at errnoException (net.js:904:11)
    at Server._listen2 (net.js:1023:19)
    at listen (net.js:1064:10)
    at Server.listen (net.js:1138:5)
    at Function.app.listen (/home/lucas/node/nodetest1/node_modules/express/lib/applicati
on.js:532:24)                                                                           
    at Object.<anonymous> (/home/lucas/node/nodetest1/bin/www:7:18)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)

npm ERR! [email protected] start: `node ./bin/www`
npm ERR! Exit status 8
npm ERR! 
npm ERR! Failed at the [email protected] start script.
npm ERR! This is most likely a problem with the nodetest1 package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node ./bin/www
npm ERR! You can get their info via:
npm ERR!     npm owner ls nodetest1
npm ERR! There is likely additional logging output above.
npm ERR! System Linux 3.13-0.bpo.1-amd64
npm ERR! command "/usr/local/bin/node" "/usr/local/bin/npm" "start"
npm ERR! cwd /home/lucas/node/nodetest1
npm ERR! node -v v0.10.28
npm ERR! npm -v 1.4.9
npm ERR! code ELIFECYCLE
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /home/lucas/node/nodetest1/npm-debug.log
npm ERR! not ok code 0

并且sudo netstat -lnp不返回任何匹配的 80 端口:

[lucas@ecoinstance]~/node/nodetest1$ sudo netstat -lnp                           [48/648]
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Progr
am name
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      29160/mon
god    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1976/sshd

tcp6       0      0 :::22                   :::*                    LISTEN      1976/sshd

udp        0      0 0.0.0.0:49948           0.0.0.0:*                           1604/dhcl
ient   
udp        0      0 0.0.0.0:68              0.0.0.0:*                           1604/dhcl
ient   
udp        0      0 10.240.241.116:123      0.0.0.0:*                           2076/ntpd

udp        0      0 127.0.0.1:123           0.0.0.0:*                           2076/ntpd

udp        0      0 0.0.0.0:123             0.0.0.0:*                           2076/ntpd

udp6       0      0 :::12151                :::*                                1604/dhcl
ient   
udp6       0      0 :::123                  :::*                                2076/ntpd

Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node   PID/Program name    Path
unix  2      [ ACC ]     STREAM     LISTENING     405680   22814/ssh-agent     /tmp/ssh-K
dkxJfFLpKTC/agent.22813
unix  2      [ ACC ]     STREAM     LISTENING     408230   24049/ssh-agent     /tmp/ssh-o
fUeNNEwAqtP/agent.22243
unix  2      [ ACC ]     STREAM     LISTENING     416227   29160/mongod        /tmp/mongo
db-27017.sock
unix  2      [ ACC ]     SEQPACKET  LISTENING     3692     284/udevd           /run/udev/
control
unix  2      [ ACC ]     STREAM     LISTENING     5318     1798/acpid          /var/run/a
cpid.socket
unix  2      [ ACC ]     STREAM     LISTENING     16170    5177/tmux           /tmp//tmux
-1000/default
unix  2      [ ACC ]     STREAM     LISTENING     414450   28213/dbus-daemon   /var/run/d
bus/system_bus_socket
unix  2      [ ACC ]     STREAM     LISTENING     404225   22324/1             /tmp/ssh-9
TlDmu4bjl/agent.22324
port
  • 4 4 个回答
  • 52194 Views

4 个回答

  • Voted
  1. Best Answer
    becomingwisest
    2014-06-06T21:56:41+08:002014-06-06T21:56:41+08:00

    您正在尝试以非 root 用户身份启动节点。Linux 默认只允许 root 绑定到 1024 或以下端口。

    如果您想以该用户身份运行它,您可能需要查看https://stackoverflow.com/questions/413807/is-there-a-way-for-non-root-processes-to-bind-to-特权端口 1024-on-l

    • 17
  2. Kyle Chadha
    2015-01-07T10:56:04+08:002015-01-07T10:56:04+08:00

    最简单,最好的答案恕我直言:

    • sudo apt-get install libcap2-bin
    • sudo setcap cap_net_bind_service=+ep /usr/local/bin/node
    • 达达!这允许您的节点应用程序在端口 80 上运行而不会抱怨。

    为什么我喜欢它?因为:

    • 您不必使用 apache 或 nginx
    • 您不必以 root 身份运行您的应用程序
    • 您不必转发端口(并在每次机器启动时处理)

    参考链接:https ://www.digitalocean.com/community/tutorials/how-to-use-pm2-to-setup-a-node-js-production-environment-on-an-ubuntu-vps (一篇很棒的文章关于如何在云托管上设置您的节点应用程序)。

    • 3
  3. Andrew Domaszek
    2014-06-06T20:55:12+08:002014-06-06T20:55:12+08:00

    尝试netstat -lnp以 root 身份或lsof -n -i :80

    • 2
  4. Midhun KM
    2015-03-23T22:58:53+08:002015-03-23T22:58:53+08:00

    我试图使用node server.js. 它没有显示任何错误。还,

    lsof -t -i:80

    没有列出任何进程。

    问题是我试图绑定为非特权用户。当我尝试时它起作用了:

    sudo node server.js

    如此简单,但是,有时您可能会忘记它,当您的机器上运行多个服务器(如apache、nginx 等)时,您将开始在其他服务器进程后面运行。(就像我做的那样)。希望这对某人有帮助!!!

    • 1

相关问题

  • 如何从命令提示符打开 Windows Server 2003 RTM 上的端口

  • 在wireshark中更改与端口关联的协议

  • GlassFish 更改 Web 服务的端口

  • 端口 135 / epmap

  • 如何查看 Windows 机器上是否正在使用端口?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve