Acredito que a porta 80 da minha instância remota esteja bloqueada e estou tentando executar um aplicativo node.js usando a porta 80. Experimentei as portas 3000 e 3002 e as duas portas estão funcionando bem, mas recebo um erro ao executar na porta 80. Suspeito que a porta 80 esteja bloqueada na minha saída netstat -an
abaixo, mas como posso encontrar os IDs de processo dos endereços que estão bloqueando a porta 80 abaixo?
[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
E aqui está o log ao tentar executar na porta 80 com o node.js:
[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
E sudo netstat -lnp
não retorna nenhuma porta correspondente dos anos 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
fonte
bind
manual:EACCES The address is protected, and the user is not the superuser.
E você vêEACCES
no seu relatório de erros.Tente
netstat -lnp
como root oulsof -n -i :80
fonte
A resposta mais simples e melhor imho:
sudo apt-get install libcap2-bin
sudo setcap cap_net_bind_service=+ep /usr/local/bin/node
Por que eu gosto disso? Porque:
Link de referência: https://www.digitalocean.com/community/tutorials/how-to-use-pm2-to-setup-a-node-js-production-environment-on-an-ubuntu-vps (Um ótimo artigo sobre como configurar o aplicativo do nó na hospedagem na nuvem).
fonte
Eu estava tentando executar o servidor usando
node server.js
. Ele se não aparecer nenhum erro. Além disso,lsof -t -i:80
não listou nenhum processo.
O problema foi que tentei ligar como um usuário não privilegiado. Funcionou quando tentei:
sudo node server.js
Tão simples, mas às vezes você pode se esquecer e começará a correr atrás de outros processos do servidor quando tiver vários servidores como apache, nginx etc em execução na sua máquina. (Assim como eu fiz). Espero que isso ajude alguém !!!
fonte