Apache 2 no se pudo vincular, la dirección ya está en uso

Apache 2 no se pudo vincular, la dirección ya está en uso

Instalé Apache 2 en Ubuntu 12.10. Cuando intento iniciar el servicio usando sudo /etc/init.d/apache2 start, aparece el siguiente mensaje.

*Starting web server apache2
(98)Address already in use: make_sock: could not bind to address 127.0.0.1:80
no listening sockets available, shutting down
Unable to open logs
Action 'start' failed.
The Apache error log may have more information.                                 [fail]

Respuesta1

Es muy posible que ya tenga algo ejecutándose en (o "vinculado") a ese puerto. Pruebe este comando para ver los procesos en cuestión:

sudo lsof -i :80

Esto enumera los procesos que escuchan en el puerto 80. Una vez que haya encontrado al culpable, sabrá qué proceso debe killo kill -9(también como superusuario).

Tenga en cuenta que la instancia de Apache, suponiendo que la haya iniciado antes, podría haberse quedado "obsoleta" o haberse convertido en un zombi. En este último caso, en algunos casos incluso puede ser necesario reiniciar.

De lo contrario, siga la respuesta de dedunumax.

Respuesta2

Intentarsudo service apache2 start

luego escribe

sudo service apache2 status

El segundo comando mostrará si se está ejecutando o no.

Respuesta3

Recibí este mensaje de error con la siguiente configuración:

# cat /etc/hosts
127.0.0.1   localhost
127.0.0.1   foo
...

# cat /etc/apache2/sites-enabled/foo
<VirtualHost foo:80>
...

# cat /etc/apache2/ports.conf 
...
NameVirtualHost *:80
Listen localhost:80
...

Cambiar ports.confa lo siguiente resolvió el problema:

NameVirtualHost *:80
Listen 127.0.0.1:80

Respuesta4

Es posible que algún otro software como Nginx se esté ejecutando y usando el puerto 80.

Apache2 falló en mi VPS con el mismo mensaje de error y descubrí que Nginx estaba presente en el servidor y algo (¿un trabajo cron?) se había iniciado unos días después. Esto provoca un conflicto ya que usa el puerto :80 y de alguna manera tiene prioridad sobre Apache2.

Para verificar si algo ya está usando el puerto: 80, escriba:

netstat -tulpn

Lo resolví desinstalando Nginx (con "remove --purge"), matando el proceso nginx y reiniciando Apache2.

información relacionada