Ich habe diesen Fehler bei einer Neuinstallation beim Starten von Apache2 Ubuntu 12.10 erhalten.
Es ist ein Fehler in der Apache2. Es hängt im Hintergrund. Hier ist meine Anleitung, wo die Fehler in der Software sein könnten.
Hier ist der Fehler, den ich bekommen habe:
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 bereits vergeben? Was könnte es benutzen? Hör zu:
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
Das bedeutet, dass Apache2 den Start von Apache2 verhindert. Bizarr. Dies wird bestätigen:
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
Ja, in diesem Fall wird Apache2 ausgeführt. Ich habe versucht, Apache2 ein zweites Mal auf demselben Port zu starten.
Was mich verwirrt ist, dass service
berichtet wird, dass apache2 NICHT läuft:
el@titan:~$ sudo service apache2 status
Apache2 is NOT running.
Und wenn Sie apache2ctl nach seinem Status abfragen, bleibt es hängen.
root@titan:~# /usr/sbin/apache2ctl status
**hangs until Ctrl-C is pressed.
Daher scheint Ubuntu Probleme zu haben, Apache2 beim Booten zu verwalten. Zeit, Apache2 zu stoppen:
root@titan:~# /usr/sbin/apache2ctl stop
httpd (no pid file) not running
Ein großer Hinweis! Sie versuchen, Apache2 zu stoppen und es hat die Prozess-ID verloren! Deshalb kann Ubuntu apache2 nicht stoppen, weil es nicht weiß, wo es ist!
Sie würden denken, ein Neustart würde das Problem beheben, aber dies ist nicht der Fall, da apache2 beim Booten gestartet wird und hängen bleibt. Der normale Startvorgang für Apache2 funktioniert nicht richtig.
Also, wie man es repariert?
Ich konnte dies beheben, indem ich die ps
Befehlsausgabe analysierte . Beachten Sie, dass der ps
Befehl uns mitteilt, dass dieser Prozess mit "/etc/rc2.d/S91apache2 start" gestartet wurde.
Das ist das beleidigende Programm, das einen schnellen Kick braucht.
/etc/rc2.d/S91apache2
ist der symbolische Link, der verwendet wird, um Apache2 beim Start des Computers für Sie zu starten. Aus irgendeinem Grund scheint es Apache2 zu starten und hängt dann. Wir müssen es also sagen, um das nicht zu tun.
Also schauen Sie sich das an /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 ist eine symbolische Verbindung, die wir nicht wollen, dass sie da ist. So verhindern Sie, dass Apache2 beim Booten gestartet wird:
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
Starten Sie den Computer neu, um sicherzustellen, dass Apache2 nicht startet und hängen bleibt. OK gut. Jetzt KÖNNTEN Sie Apache2 so zurücksetzen, wie es war, aber das würde es wieder zum Scheitern bringen.
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
Starten Sie den Apache2 stattdessen wie folgt:
sudo service apache2 start
Und der Apache2 ist wieder in Betrieb und bedient die Seiten erneut. Es scheint einige schwerwiegende Fehler mit Apache2 / Ubuntu 12.10 zu geben, die dazu führen, dass Apache2 startet und hängt. Dies ist ein Workaround. Ich vermute, der Fix besteht darin, neuere Versionen von Apache2 und Ubuntu zu installieren und auf das Beste zu hoffen.