Ich versuche eine VM mit Ubuntu 12.04 einzurichten. Ich habe zwei virtuelle Hosts mit Port 80 konfiguriert, aber Apache startet nicht.
Ich erhalte diesen Fehler:
(98) Address already in use: make_sock: could not bind to address 0.0.0.0:80
Die Ausgabe von netstat -tulpn
zeigt, dass Port 80 nicht verwendet wird. Was könnte dies möglicherweise verursachen?
12.04
apache2
virtualization
Gunner Barnes
quelle
quelle
grep -ri listen /etc/apache
und ansudo netstat -ntlp | grep 80
.grep -ri listen /etc/apache2
Ausgaben: etc / apache2 / httpd.conf: Listen 80 /etc/apache2/httpd.conf: Listen 443 /etc/apache2/ports.conf: Listen 80 /etc/apache2/httpd.conf: Listen 443 / etc / apache2 / httpd.conf: Listen 443sudo netstat -ntlp | grep 80
gibt überhaupt nichts aus.Antworten:
Listen 80
Stellen Sie sicher, dass Sie in .conf-Dateien nicht zweimal deklarieren.Zum Beispiel könnten Sie es sowohl im
ports.conf
als auch im Gasthaus habensites-enabled/www.conf
.Um dies herauszufinden, verwenden Sie:
grep -ri listen /etc/apache2
An
Listen 80
einem einzigen Ort aufbewahren.quelle
Antworten auf die Art und Weise, wie ich dieses Problem gelöst habe. Kann jemandem in Zukunft hilfreich sein.
Versuchen
netstat -ltnp | grep :80
Dies würde so etwas wie zurückgeben
Dann renne
Wobei 1047 die PID des Programms ist, das auf Port 80 ausgeführt wird. Sie können die PID ersetzen, die Sie von erhalten haben
netstat
quelle
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN -
Als ich dieses Problem hatte, stellte sich heraus, dass mein Apache beim Booten nicht gestartet werden konnte, da ich eine SSL-Site hatte, für die ein Kennwort für das Zertifikat eingegeben werden musste.
Eine gute Möglichkeit, um festzustellen, ob dies bei Ihnen der Fall ist, besteht darin, Folgendes auszuführen
ps -ef | grep apache
: Wenn dies Prozesse zurückgibt, die aussehen/bin/bash /usr/share/apache2/ask-for-passphrase mysite.com:443 RSA
, wartet es darauf, dass in einem Terminal ein Kennwort eingegeben wird, das Sie nie sehen werden.Zuerst habe ich den hängen gebliebenen Prozess beendet (das Senden eines
kill -HUP
an die Prozess-ID für / usr / sbin / apache2 sollte ausreichen, um auch die anderen zu beenden, aber machen Sie einen anderenps -ef | grep apache
, um sicherzugehen).Dann habe ich die Anweisungen in diesem Beitrag befolgt , um eine SSL-Kennwortdatei zu erstellen, für die kein Kennwort eingegeben werden musste. Dann hat a
service apache2 start
prima funktioniert, und Apache hat nach einem Neustart ordnungsgemäß gestartet.quelle
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:
Adresse bereits vergeben? Was könnte es benutzen? Hör zu:
Das bedeutet, dass Apache2 den Start von Apache2 verhindert. Bizarr. Dies wird bestätigen:
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:Und wenn Sie apache2ctl nach seinem Status abfragen, bleibt es hängen.
Daher scheint Ubuntu Probleme zu haben, Apache2 beim Booten zu verwalten. Zeit, Apache2 zu stoppen:
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 derps
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
.Es ist eine symbolische Verbindung, die wir nicht wollen, dass sie da ist. So verhindern Sie, dass Apache2 beim Booten gestartet wird:
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.
Starten Sie den Apache2 stattdessen wie folgt:
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.
quelle
Ich hatte einen Nginx-Server, der auf meinem AWS EC2-Server lauschte. Ich glaube, er wurde konfiguriert, als ich den EC2 erstellte. Daher wurde der Fehler "Adresse bereits verwendet" gemeldet. Also habe ich den Dienst beendet und den Apache2-Dienst gestartet:
quelle
Ich habe es herausgefunden. Ich hatte doppelte Listen 80-Befehle sowohl in meiner httpd.conf als auch in meiner ports.conf
Außerdem habe ich beim Kopieren der Konfigurationsdatei für den zu virtualisierenden Server nicht bemerkt, dass das Fehlerprotokollverzeichnis geändert wurde. In diesem Fehlerprotokoll habe ich festgestellt, dass das Verzeichnis für die
mime.types
Konfigurationsdatei in meinerhttpd.conf
Datei nicht korrekt ist . Ich habe diesen Parameter aktualisiert, und der Server wurde ordnungsgemäß gestartet.quelle
Listen 80
Befehle in meinemhttpd.conf
undports.conf
Das bedeutet, dass Port 80 bereits verwendet wird. Ändern Sie entweder den Port für Apache2 (was ich nicht empfehle), indem Sie Folgendes bearbeiten:
Oder schließen Sie die Anwendung, die auf Port 80 ausgeführt wird:
Um herauszufinden, was auf Port 80 läuft.
quelle
netstat -antp | grep 80
gibt auch nichts aus.Nur ein Hinweis für alle, die vielleicht VirtualBox mit NAT-Netzwerken betreiben. Ich stellte fest, dass eine NAT-Regel zwischen meinem Gast und meinem Host eingerichtet wurde, die den Port bindet
quelle
Nicht nur doppelte Erwähnungen von
aber erwähne dies auch zusätzlich zu Listen 80
quelle