J'ai obtenu cette erreur lors d'une nouvelle installation en démarrant apache2 Ubuntu 12.10.
C'est un bug dans Apache2. Il se bloque en arrière-plan. Voici mon explication de l'endroit où les bogues peuvent se trouver dans le logiciel.
Voici l'erreur que j'ai obtenue :
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]
Adresse déjà utilisée ? Qui pourrait l'utiliser ? Vérifiez :
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
Cela signifie que apache2 empêche apache2 de démarrer. Bizarre. Ceci va le confirmer :
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
Oui, dans ce cas, apache2 est en cours d'exécution, j'ai essayé de démarrer apache2 une deuxième fois sur le même port.
Ce qui me trouble, c'est que service
signale qu'apache2 ne fonctionne PAS :
el@titan:~$ sudo service apache2 status
Apache2 is NOT running.
Et quand on demande son état à apache2ctl, il se bloque.
root@titan:~# /usr/sbin/apache2ctl status
**hangs until Ctrl-C is pressed.
Donc Ubuntu semble avoir des problèmes pour gérer apache2 au démarrage. Il est temps d'arrêter apache2 :
root@titan:~# /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 est !
On pourrait penser 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 d'apache2 ne fonctionne pas correctement.
Alors comment le réparer ?
J'ai pu réparer cela en analysant le ps
sortie de commande. Notez que le ps
nous indique que ce processus a été lancé par "/etc/rc2.d/S91apache2 start".
C'est le programme offensant qui a besoin d'un coup de pied rapide.
/etc/rc2.d/S91apache2
est le lien symbolique utilisé pour démarrer apache2 pour vous lorsque l'ordinateur démarre. Pour une raison quelconque, il semble démarrer apache2 puis se bloquer. Nous devons donc lui dire de ne pas le faire.
Alors, allez jeter un coup d'oeil à ça /etc/rc2.d/S91apache2
.
el@titan:/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 :
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
Redémarrez l'ordinateur pour vous assurer qu'Apache2 ne démarre pas et ne se bloque pas. Ok, c'est bon. Maintenant, vous POURRIEZ remettre apache2 comme il était, mais cela le ferait échouer à nouveau.
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
A la place, démarrez l'apache2 comme ceci :
sudo service apache2 start
Et l'apache2 est de nouveau opérationnel et sert des pages à nouveau. Il semble qu'il y ait de sérieux bogues avec apache2/Ubuntu 12.10 qui provoquent le démarrage et le blocage d'apache2. C'est une solution de contournement, je suppose que la solution est d'obtenir des versions plus récentes d'apache2 et d'Ubuntu et d'espérer le meilleur.