Debian: el puerto 80 está bloqueado, pero no sé por qué


8

No puedo hacer que lighttpd escuche el puerto 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!

En realidad, también tengo instalado apache2 en mi servidor (escuchando el puerto 80) pero no está activo.

Usé netstat / netstat -npl pero no fue útil

¿Cómo puedo averiguar qué está usando el puerto?

Respuestas:


27

A pesar de que la gente se acostumbró a netstateste tipo de operaciones, es bueno saber que Linux tiene otra herramienta de red excelente (y, en realidad, superior) ss. Por ejemplo, para averiguar qué proceso ha abierto el puerto 80, lo ejecuta de modo que:

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

así que no hay necesidad de pasar por filtros externos. Seguramente tiene muchos más mandos útiles, así que familiarízate con él.

Por completo y desde hace poco me encontré man fuser, también puedo mencionar:

  • sudo fuser 80/tcp- este también le ahorra jugar en cut/ grep/ awk... tenga en cuenta que esta notación es un atajo, en caso de que haya una ambigüedad, debe usar uno de los espacios de nombres permitidos -n …, comosudo fuser -n tcp 80

  • sudo lsof -n -sTCP:LISTEN -i:80- fue señalado por @ wallenborn . Mientras tanto, -nno es estrictamente necesario, se recomienda encarecidamente, ya que de lo contrario, utiliza la resolución de DNS, lo que generalmente ralentiza la producción terriblemente.


@Goot, si te refieres a binario, sí, al menos ls -l /proc/PID/exelo haría. Y te refieres a su directorio de trabajo actual, ver …/cwd.
poige

5

Address already in use significa que otro proceso ya está escuchando en el puerto 80. Solo un proceso puede escuchar en un puerto determinado a la vez.

Para encontrar el proceso, ejecute como root:

netstat -tnlp | grep -w 80

Se enumerará el proceso ofensivo.


gracias, descubrí que hay otra instancia de lighttpd ejecutándose. Aceptaré tu respuesta cuando sea posible.
Goot

4

Otra opción con menos pulsaciones de teclas es lsof:

lsof -i :80

No Muestra no solo procesos de escucha.
Poige

1
El uso correcto es un poco más largo:lsof -n -sTCP:LISTEN -i:22
poige

1
El uso correcto es un poco más largo: sudo lsof -n -sTCP:LISTEN -i:80. Y es mejor usarlo sudoexplícitamente para enfatizar que, a menos que el usuario tenga permisos superiores, es posible que no pueda obtener resultados correctos.
poige

0

Hilo antiguo pero quién sabe, alguien tiene el mismo problema que tuve. En Apache2 tenía más de un sitio habilitado. En una de las configuraciones del sitio (/ etc / apache2 / sites-available) la primera línea era

listen 80

¡Esto causó un conflicto con el propio Apache! Porque ya estaba escuchando en el puerto 80 como una configuración global. Simplemente elimine el 'listen 80' de yoursite.conf si Apache tiene el puerto 80 como puerto predeterminado.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.