Debian - A porta 80 está bloqueada, mas não sei por que

8

Não consigo fazer o lighttpd escutar a porta 80.

~# /etc/init.d/lighttpd start
Starting web server: lighttpd2013-03-16 23:15:02: (network.c.379) can't bind to port:  80 Address already in use
 failed!

Na verdade, eu também tenho o apache2 instalado no meu servidor (ouvindo a porta 80), mas ele não está ativo.

Eu usei netstat / netstat -npl, mas não foi útil

Como posso descobrir o que está usando a porta?

Goot
fonte

Respostas:

27

Apesar de as pessoas se acostumarem a netstatesse tipo de operação, é bom saber que o Linux tem outra ótima (e, na verdade superior) ferramenta de rede - ss. Por exemplo, para descobrir qual processo abriu a porta 80, você a executa:

sudo ss -pt state listening 'sport = :80'

portanto, não há necessidade de passar por filtros externos. Certamente ele tem muito mais botões úteis, então familiarize-se com ele.

Por uma questão de completude, e desde que me deparei recentemente man fuser, também posso mencionar:

  • sudo fuser 80/tcp- este também evita que você mexa em cut/ grep/ awk… lembre-se de que essa notação é um atalho, caso exista uma ambiguidade, você deve usar um dos espaços para nome permitidos -n …, comosudo fuser -n tcp 80

  • sudo lsof -n -sTCP:LISTEN -i:80- foi apontado por @ wallenborn . Enquanto isso -nnão é estritamente necessário, é altamente recomendável, pois caso contrário, ele usa a resolução de DNS, o que geralmente diminui enormemente a produção.

poige
fonte
@ Boot, se você quer dizer binário, sim, pelo menos ls -l /proc/PID/exefaria. E você quer dizer o diretório de trabalho atual, veja …/cwd.
poige
5

Address already in use significa que outro processo já está escutando na porta 80. Somente um processo pode escutar em uma determinada porta por vez.

Para encontrar o processo, execute como root:

netstat -tnlp | grep -w 80

O processo incorreto será listado.

Michael Hampton
fonte
obrigado, eu descobri que existe outra instância do lighttpd em execução. Aceitarei sua resposta quando for possível.
Goot
4

Outra opção com menos pressionamentos de tecla é lsof:

lsof -i :80
wallenborn
fonte
Não. Mostra não apenas processos de escuta.
poige
1
O uso correto é um pouco mais longo:lsof -n -sTCP:LISTEN -i:22
poige 18/03
1
O uso correto é um pouco mais longo: sudo lsof -n -sTCP:LISTEN -i:80. E é melhor usar sudoexplicitamente para enfatizar que, a menos que o usuário tenha permissões superiores, ele poderá não ser capaz de obter resultados corretos.
poige
0

Tópico antigo, mas quem sabe, alguém tem o mesmo problema que eu tive. No Apache2, eu tinha mais de um site ativado. Em uma das configurações do site (/ etc / apache2 / sites-available), a primeira linha foi

listen 80

Isso causou um conflito com o próprio Apache! Porque ele já estava escutando na porta 80 como uma configuração global. Apenas remova o 'listen 80' do yoursite.conf se o Apache tiver a porta 80 como porta padrão.

Pianoman
fonte