webentwicklung-frage-antwort-db.com.de

Ubuntu-Fehler mit Apache: (98) Adresse wird bereits verwendet

Ich erhalte diese Fehlermeldung, wenn ich versuche, Apache in Ubuntu zu starten. 

 (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.

Ich habe das in meiner ports.conf

NameVirtualHost *:80
Listen 80

Dies ist meine Vhost-Datei

<VirtualHost *:80>
          ServerAdmin [email protected]
          ServerName Rails.server.com
          # ServerAlias
          DocumentRoot /var/www/sample_app/current/public
          ErrorLog /var/www/sample_app/error.log

          RailsEnv production
        <Directory "/var/www/sample_app/current/public">
          Options Indexes FollowSymLinks MultiViews
          Order allow,deny
          Allow from all
        </Directory>
</VirtualHost>

Was vermisse ich?

24

Es scheint, dass Port 80 bereits vergeben ist. Verwenden Sie einen anderen Port oder versuchen Sie netstat (grep das Ergebnis, um nur die Zeile mit dem Wert 80 auszuwählen), ps und kill, um zu sehen, welche Anwendung den Port belegt, und schließen Sie ihn.

10
toniedzwiedz
netstat -ltnp | grep :80

Dies würde Folgendes zurückgeben:

tcp6 0 0 ::: 80 ::: * HÖREN 1047/Apache2

Führen Sie dann den folgenden Befehl aus:

Sudo kill -9 1047

(1047 - pid nein)

(die PID, die in Ihrer speziellen Instanz angezeigt wird.)

Starten Sie Apache neu.

Sudo service Apache2 restart

Verweis auf Ubuntu-Foren .

51
pinku

In allen Fällen funktioniert das Beenden des Prozesses möglicherweise nicht, da der Prozess, der den Port 80 verwendet, neu gestartet wird und die Verwendung des Ports nicht zulässt. Was also getan werden kann, ist den Port für Apache zu ändern, wenn das keine Rolle spielt. 

Dafür sind zwei Dinge zu ändern:

  1. Öffnen Sie /etc/Apache2/ports.conf mit einem beliebigen Texteditor und ändern Sie den Wert des Eintrags Listen 80 in den gewünschten Port (z. B. Listen 8080).

  2. Ändern Sie den Eintrag für <virtualhost 80> in dieselbe Portnummer, die Sie in der /etc/Apache2/ports.conf-Datei in /etc/Apache2/sites/enabled/000-default angegeben haben (z. B. <virtualhost 8080>).

12
rahul

Stellen Sie sicher, dass Sie den Befehl Listen 80 nicht an mehreren Stellen haben.

In meinem Fall erhielt ich den gleichen Fehler und der Grund dafür war, dass dieser Befehl sowohl in ports.conf als auch sites-enabled/000-default war.

9
eaykin

In meinem Fall war es nginx (weil ich es auf meinem Server habe). 

Sudo service nginx stop
Sudo service Apache2 start
5
Sudo netstat -tulpn| grep :80

pkill der Prozess (nginx?)

Deaktivieren Sie den virtuellen Port, der an den Port 80 gebunden ist, den Sie nicht möchten (nginx?). Es ist in/etc/nginx/sites-enabled oder in/etc/Apache2/sites-enabled

3
hobs

Sudo kill -9 -2321 (pid) BT neu starten Fertig. Datei.

1
Vandan

Außer dem Lösungsfindungsprozess, der auf: 80 ausgeführt wird, und beenden Sie den Vorgang, und starten Sie ihn erneut.

Dieser Fehler kann auftreten, wenn Sie mehrere Einträge für "Abhören" in der Apache-Conf-Datei oder in einer .conf-Datei haben, die in der Apache-Conf-Datei enthalten ist. Hoffe das hilft jemandem !! 

0
Leo Prince

In meinem Fall hatte ich die Standarddatei ssl.conf (umbenannt in ssl.conf.bak) entfernt und besaß eine eigene SSL-Konfigurationsdatei.

Dann habe ich einen yum update gemacht und Apache aktualisiert ... Was auch die Datei ssl.conf wieder eingeführt hat, was bedeutet, dass ich 2 conf-Dateien mit Listen 443 hatte.

Lösung (generisch - CentOS): Gehen Sie zu /etc/httpd/conf.d, führen Sie einen grep -r 'Listen' . durch, prüfen Sie, ob Sie Listen XXX-Anweisungen doppelt vorhanden haben, und entfernen Sie sie bei Bedarf.

0
Populus

Ich habe diesen Fehler bei einer Neuinstallation von Ubuntu 12.10 beim Starten von Apache2 erhalten.

Es ist ein Fehler im Apache2. Es wird im Hintergrund aufgehängt. Hier ist meine Komplettlösung, wo die Fehler in der Software sein könnten.

Hier ist der Fehler, den ich bekam:

[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 bereits vergeben? Was könnte es verwenden? Hör zu:

[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

Das bedeutet, dass Apache2 den Start von Apache2 verhindert. Bizarr. Dies wird bestätigen:

[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

Ja, in diesem Fall läuft Apache2, ich habe versucht, Apache2 ein zweites Mal am selben Port zu starten.

Was mich verwirrt, ist, dass service meldet, dass Apache2 NICHT ausgeführt wird:

[email protected]:~$ Sudo service Apache2 status
Apache2 is NOT running.

Wenn Sie den Status von Apache2ctl abfragen, bleibt er hängen.

[email protected]:~# /usr/sbin/Apache2ctl status
**hangs until Ctrl-C is pressed.

Ubuntu scheint also Probleme beim Management von Apache2 beim Booten zu haben. Zeit, um Apache2 zu stoppen:

[email protected]:~# /usr/sbin/Apache2ctl stop
httpd (no pid file) not running

Ein großer Hinweis! Sie versuchen, Apache2 zu stoppen, und die Prozess-ID ist verloren! Also kann Ubuntu Apache2 nicht stoppen, weil es nicht weiß, wo es ist!

Man könnte meinen, ein Neustart würde das Problem beheben, aber Apache2 wird beim Booten gestartet und hängt. Der normale Startvorgang für Apache2 funktioniert nicht richtig.

Wie kann ich das beheben?

Ich konnte dies beheben durch Analyse der Befehlsausgabe ps. Beachten Sie, dass der Befehl ps uns mitteilt, dass der Prozess mit "/etc/rc2.d/S91Apache2 start" gestartet wurde. 

Das ist das beleidigende Programm, das einen schnellen Tritt erfordert.

/etc/rc2.d/S91Apache2 ist der symbolische Link, der zum Starten von Apache2 für Sie beim Starten des Computers verwendet wird. Aus irgendeinem Grund scheint es, Apache2 zu starten und hängt dann. Also müssen wir es sagen, um das nicht zu tun.

Also, schau dir mal diesen /etc/rc2.d/S91Apache2 an. 

[email protected]:/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 es dort ist. So können Sie verhindern, dass Apache2 beim Booten gestartet wird:

[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

Starten Sie den Computer neu, um sicherzustellen, dass Apache2 nicht startet und hängt. Ok gut. Jetzt KÖNNEN Sie Apache2 wieder so einsetzen, wie es war, aber das würde dazu führen, dass es wieder fehlschlägt.

[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

Starten Sie den Apache2 stattdessen wie folgt:

Sudo service Apache2 start

Und der Apache2 ist wieder da und bedient Seiten. Es scheint einige schwerwiegende Fehler mit Apache2/Ubuntu 12.10 zu geben, die dazu führen, dass Apache2 startet und hängt. Dies ist eine Problemumgehung. Ich denke, das Update besteht darin, neuere Versionen von Apache2 und Ubuntu zu erhalten und auf das Beste zu hoffen.

0
Eric Leschinski

Wenn Sie Ihren Server über ein Terminal neu starten oder starten, haben Sie möglicherweise vergessen, vor dem Befehl Sudo hinzuzufügen.

Verwenden Sie Sudo /etc/init.d/Apache2 reload anstelle von /etc/init.d/Apache2 reload

0
Subin

Ich hatte das gleiche Problem mit einer ganz anderen Ursache. Ich verwende Apache 2.4.7 mit PHP 5.5.6 unter CentOS 6.5.

Ich habe die php.ini durcheinander gebracht, indem ich BEIDE output_handler = ob_gzhandler UND zlib.output_compression = On hatte (entweder eine, nicht beide kann gesetzt werden).

Beim Neustart von Apache wird er an Port 80 gebunden, aber sonst passiert nichts. Es sieht so aus, als würde es laufen, aber der Fehler von php hat es irgendwo gesperrt.

Der Hinweis war, "php -v" zu überprüfen ... als ich sah, dass nichts zurückgegeben wurde (der Fehler wurde in error_log geschrieben), korrigierte ich die php.ini und Apache war wieder glücklich.

Vielleicht hilft das jemandem ...

0
Yusuf Moola

Liste der aktuell laufenden Dienste,

$ Sudo netstat -tulpn

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:8069            0.0.0.0:*               LISTEN      6399/python     
tcp        0      0 0.0.0.0:53670           0.0.0.0:*               LISTEN      6681/Brackets-node
....
....

Nur bestimmte Dienstleistungen finden,

$ Sudo netstat -tulpn| grep python
[email protected]:~/odoo/master-hr-holidays-newapi-jpa$ Sudo netstat -tulpn| grep python
tcp        0      0 0.0.0.0:8069            0.0.0.0:*               LISTEN      6399/python     
tcp        0      0 127.0.0.1:41974         0.0.0.0:*               LISTEN      3123/python 

Haben Sie bei PID (6399) festgestellt, dass Python ausgeführt wird? 

Beenden Sie diesen Dienst mit folgendem Befehl,

$ Sudo kill -9 -6399

Jetzt ist der Dienst komplett gestoppt, Sie können normal neu beginnen.


Extra Befehl zum Auffinden von laufenden srrvices,

$ ps -ef
$ ps -ef | grep python
0
Jay Patel

Dies liegt daran, dass Port 80 von anderen Diensten verwendet wird.

Sudo killall httpd

Prüfen Sie, ob ein Dienst 80 weiterhin verwendet 

Sudo netstat -tulpn| grep :80

und starten Sie den Server neu

Sudo service httpd start

 enter image description here