Recibí este error en una instalación nueva al iniciar apache2 Ubuntu 12.10.
Es un error en el apache2. Se cuelga en el fondo. Aquí está mi tutorial sobre dónde podrían estar los errores en el software.
Aquí está el error que recibí:
el@titan:~$ sudo service apache2 start
* Starting web server apache2
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Action 'start' failed.
The Apache error log may have more information.
[fail]
¿Dirección ya en uso? ¿Qué podría estar usándolo? Echale un vistazo:
el@titan:~$ grep -ri listen /etc/apache2
/etc/apache2/apache2.conf:# supposed to determine listening ports for incoming connections, and which
/etc/apache2/apache2.conf:# Include list of ports to listen on and which to use for name based vhosts
/etc/apache2/ports.conf:Listen 80
/etc/apache2/ports.conf: Listen 443
/etc/apache2/ports.conf: Listen 443
Eso significa que apache2 impide que apache2 se inicie. Extraño. Esto confirmará:
el@titan:~$ ps -ef | grep apache2
root 1146 954 0 15:51 ? 00:00:00 /bin/sh /etc/rc2.d/S91apache2 start
root 1172 1146 0 15:51 ? 00:00:00 /bin/sh /usr/sbin/apache2ctl start
root 1181 1172 0 15:51 ? 00:00:00 /usr/sbin/apache2 -k start
root 1193 1181 0 15:51 ? 00:00:00 /bin/bash /usr/share/apache2/ask-for-passphrase 127.0.1.1:443 RSA
el 5439 5326 0 16:23 pts/2 00:00:00 grep --color=auto apache2
Sí, en este caso apache2 se está ejecutando, estaba intentando iniciar apache2 por segunda vez en el mismo puerto.
Lo que me confunde es que service
informa que apache2 NO se está ejecutando:
el@titan:~$ sudo service apache2 status
Apache2 is NOT running.
Y cuando consulta apache2ctl por su estado, se cuelga.
root@titan:~# /usr/sbin/apache2ctl status
**hangs until Ctrl-C is pressed.
Entonces Ubuntu parece tener problemas para administrar apache2 en el arranque. Hora de parar apache2:
root@titan:~# /usr/sbin/apache2ctl stop
httpd (no pid file) not running
Una gran pista! Intenta detener apache2 y perdió la identificación del proceso. ¡Entonces Ubuntu no puede detener apache2 porque no sabe dónde está!
Se podría pensar que un reinicio lo solucionaría, pero no lo hace porque apache2 se inicia en el inicio y se cuelga. El proceso de arranque normal para apache2 no funciona correctamente.
Entonces, ¿cómo solucionarlo?
Pude solucionar esto analizando la ps
salida del comando. Observe que el ps
comando nos dice que ese proceso fue iniciado por "/etc/rc2.d/S91apache2 start".
Ese es el programa ofensivo que necesita una patada rápida.
/etc/rc2.d/S91apache2
es el enlace simbólico utilizado para iniciar apache2 cuando se inicia la computadora. Por alguna razón, parece estar iniciando apache2 y luego se cuelga. Entonces tendremos que decirle que no haga eso.
Así que ve a ver eso /etc/rc2.d/S91apache2
.
el@titan:/etc/rc2.d$ ls -l
lrwxrwxrwx 1 root root 17 Nov 7 21:45 S91apache2 -> ../init.d/apache2*
Es un enlace simbólico que no queremos que esté allí. Haga esto para evitar que apache2 se inicie en el arranque:
root@titan:~# sudo update-rc.d -f apache2 remove
Removing any system startup links for /etc/init.d/apache2 ...
/etc/rc0.d/K09apache2
/etc/rc1.d/K09apache2
/etc/rc2.d/S91apache2
/etc/rc3.d/S91apache2
/etc/rc4.d/S91apache2
/etc/rc5.d/S91apache2
/etc/rc6.d/K09apache2
Reinicie la computadora para asegurarse de que apache2 no se inicie y se cuelgue. Bien. Ahora PODRÍAS volver a poner apache2 como estaba, pero eso haría que volviera a fallar.
root@titan:~$ sudo update-rc.d apache2 defaults //(don't do this)
Adding system startup for /etc/init.d/apache2 ...
/etc/rc0.d/K20apache2 -> ../init.d/apache2
/etc/rc1.d/K20apache2 -> ../init.d/apache2
/etc/rc6.d/K20apache2 -> ../init.d/apache2
/etc/rc2.d/S20apache2 -> ../init.d/apache2
/etc/rc3.d/S20apache2 -> ../init.d/apache2
/etc/rc4.d/S20apache2 -> ../init.d/apache2
/etc/rc5.d/S20apache2 -> ../init.d/apache2
En su lugar, inicie el apache2 así:
sudo service apache2 start
Y el apache2 está respaldado y sirve páginas nuevamente. Parece que hay algunos errores graves con apache2 / Ubuntu 12.10 que hacen que apache2 se inicie y se cuelgue. Esta es una solución alternativa, supongo que la solución es obtener versiones más recientes de apache2 y Ubuntu y esperar lo mejor.