J'ai eu cette erreur lors d’une nouvelle installation lors du démarrage d’apache2 Ubuntu 12.10.
C'est un bug dans apache2. Il est accroché en arrière-plan. Voici ma solution pour savoir où se trouvent les bogues dans le logiciel.
Voici l'erreur que j'ai eu:
[email protected]:~$ 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]
Adresse déjà utilisée? Qu'est-ce qui pourrait l'utiliser? Check it out:
[email protected]:~$ 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
Cela signifie qu'Apache2 empêche Apache2 de démarrer. Bizarre. Cela confirmera:
[email protected]:~$ 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
Oui, dans ce cas, apache2 est en cours d'exécution, j'essayais de démarrer apache2 une seconde fois sur le même port.
Ce qui m'embête, c'est que service
indique que apache2 ne fonctionne PAS:
[email protected]:~$ sudo service apache2 status
Apache2 is NOT running.
Et quand vous interrogez apache2ctl pour son statut, il se bloque.
[email protected]:~# /usr/sbin/apache2ctl status
**hangs until Ctrl-C is pressed.
Ubuntu semble donc avoir du mal à gérer apache2 au démarrage. Il est temps d'arrêter apache2:
[email protected]:~# /usr/sbin/apache2ctl stop
httpd (no pid file) not running
Un gros indice! Vous essayez d'arrêter apache2 et il a perdu l'identifiant du processus! Donc, Ubuntu ne peut pas arrêter apache2 car il ne sait pas où il se trouve!
Vous penseriez qu’un redémarrage résoudrait le problème, mais ce n’est pas le cas car apache2 démarre au démarrage et se bloque. Le processus de démarrage normal pour apache2 ne fonctionne pas correctement.
Alors, comment le réparer?
J'ai pu résoudre ce problème en analysant la sortie de la commande ps
. Notez que la commande ps
nous indique que ce processus a été démarré par "/etc/rc2.d/S91apache2 start".
C'est le programme fautif qui a besoin d'un coup de pied rapide.
/etc/rc2.d/S91apache2
est le lien symbolique utilisé pour démarrer apache2 lorsque l'ordinateur démarre. Pour une raison quelconque, il semble commencer apache2 puis se bloque. Il faudra donc lui dire de ne pas le faire.
Alors allez jeter un oeil à ce /etc/rc2.d/S91apache2
.
[email protected]:/etc/rc2.d$ ls -l
lrwxrwxrwx 1 root root 17 Nov 7 21:45 S91apache2 -> ../init.d/apache2*
C'est un lien symbolique que nous ne voulons pas qu'il soit là. Faites cela pour empêcher apache2 de démarrer au démarrage:
[email protected]:~# 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
Redémarrez l'ordinateur pour vous assurer qu'apache2 ne démarre pas et ne se bloque pas. OK bien. Maintenant, vous POUVEZ remettre apache2 comme avant, mais cela ferait échouer à nouveau.
[email protected]:~$ 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
Au lieu de cela, lancez apache2 comme ceci:
sudo service apache2 start
Et apache2 est de nouveau en sauvegarde et de servir des pages. Il semble y avoir de sérieux bogues avec apache2 / Ubuntu 12.10 qui provoquent le démarrage et le blocage d’apache2. Ceci est une solution de contournement, je suppose que le correctif est d'obtenir de nouvelles versions de apache2 et Ubuntu et d'espérer pour le mieux.