Apache kann unter Ubuntu 12.10 nicht gestartet werden: Keine Hörsockets verfügbar


9

Ich kann Apache2 nicht mit apt-get installieren. Ich erhalte den gleichen Fehler bei zwei separaten Ubuntu 12.10-Installationen, eine auf meinem Desktop-PC und die andere in VirtualBox:

michal@michaltest:~$ sudo service apache2 start
 * Starting web server apache2
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
no listening sockets available, shutting down
Unable to open logs
Action 'start' failed.
The Apache error log may have more information.
           [fail]

lsof sagt:

michal@michaltest:/var/log/apache2$ sudo lsof -i :80
COMMAND     PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
ubuntu-ge  2074 michal   11u  IPv4  23978      0t0  TCP michaltest.local:47578->mulberry.canonical.com:http (CLOSE_WAIT)
firefox   25194 michal   71u  IPv4  42477      0t0  TCP michaltest.local:59793->69.59.197.29:http (ESTABLISHED)
firefox   25194 michal   76u  IPv4  41834      0t0  TCP michaltest.local:59698->69.59.197.29:http (ESTABLISHED)
gvfsd-htt 25320 michal   12u  IPv4  42568      0t0  TCP michaltest.local:56203->lb260.amst.cotendo.net:http (CLOSE_WAIT)

netstat sagt:

michal@michaltest:/var/log/apache2$ sudo netstat -lnp | grep '80'
unix  2      [ ACC ]     STREAM     LISTENING     8030     876/acpid           /var/run/acpid.socket

/var/log/apache2/error.log:

[Thu Nov 08 11:13:30 2012] [notice] Apache/2.2.22 (Ubuntu) configured -- resuming normal operations
[Thu Nov 08 11:17:32 2012] [notice] caught SIGTERM, shutting down

/etc/apache2/ports.conf:

NameVirtualHost *:80
Listen 80

<IfModule mod_ssl.c>
    Listen 443
</IfModule>

<IfModule mod_gnutls.c>
    Listen 443
</IfModule>

Danke für Ihre Hilfe.

EDIT # 1:

michal@michaltest:~$ sudo netstat -ano | grep '443'
tcp       54      0 10.0.2.15:58504         91.189.92.70:443        CLOSE_WAIT  off (0.00/0/0)

Antworten:


8

Sie müssen nur Nginx (3 Pakete) entfernen, dann ist es soweit .....

Ihr Hauptproblem sind keine verfügbaren Listening-Sockets. Sie haben dieses Problem, weil eine andere Anwendung / ein anderer Dienst Port 80 auf Ihrem Ubuntu-Server erworben hat.

Jetzt müssen Sie den Prozess beenden, der Port 80 erworben hat. Sie können dies leicht mit folgendem Befehl finden: -

sudo netstat -ltnp | grep ': 80'

Dies wird ungefähr Folgendes zurückgeben: -

tcp 0 0 127.0.0.1:80 0.0.0.0:* HÖREN 1588 / aolserver4-nsd

Für den obigen Fall, Prozess 1588 hat Port 80 erworben , müssen Sie diesen Prozess 1588 beenden.

sudo kill -9 1588

Jetzt können Sie Ihren Apache-Server mit dem folgenden Befehl starten

sudo /etc/init.d/apache2 start


3
Vielen Dank! Das hat mich ein bisschen verblüfft, weil es heißt, dass "das Apache-Fehlerprotokoll möglicherweise mehr Informationen enthält", aber nichts darin enthalten ist, auch "Protokolle können nicht geöffnet werden", aber es gibt keine Informationen, welche Protokolldatei (Apache? Die vhosts?). ). Es stellt sich heraus, dass nodejs immer noch Port 80 verwendet.
andyk

Ich erhalte den gleichen Fehler, aber netstat listet nichts über Port 80 auf ...
Cerin

@Cerin du solltest sudo vor netstat ausprobieren.
Vikas Dwivedi

2

Um den Fehler "apache2: Der vollständig qualifizierte Domänenname des Servers konnte unter Verwendung von 127.0.1.1 für Servername nicht zuverlässig ermittelt werden" zu beheben , geben Sie bitte Folgendes in Ihrer apache2.conf-Datei an

ServerName HOSTNAME_OF_THE_SERVER

Speichern Sie die conf-Datei und starten Sie den Apache-Server neu.

Bitte posten Sie die Ausgabe von sudo netstat -ano | grep '443'

Stellen Sie außerdem sicher, dass Sie das SSL-Zertifikat auf dem Apache-Webserver konfiguriert haben, wenn Sie Apache so konfigurieren, dass es den 443 / ssl-Port überwacht.


Ich habe die Ausgabe von gepostet sudo netstat -ano | grep '443'. Die Sache mit dem Servernamen ist kein Problem. Vielen Dank.
Michalstanko

1

Hast du gesehen:

Unable to open logs

Ich denke, Sie könnten die Berechtigungen für / var / log / apache2 überprüfen!


Ich bin ein bisschen ein Neuling, aber ich habe das /var/log/apache2Verzeichnis rekursiv weltschreibbar gemacht, dann erneut versucht, es auszuführen, sudo service apache2 startund die Ausgabe war noch Unable to open logsvorhanden. Irgendwelche Vorschläge? Vielen Dank.
Michalstanko


1

Es sieht so aus, als ob möglicherweise ein Nginx-Dienst dahinter läuft. Stoppen Sie also den nginx "Dienst nginx stop" und versuchen Sie nun, den apache2-Dienst zu starten. Er sollte ohne Probleme funktionieren. (Beenden Sie, wenn andere App-Dienste ausgeführt werden.)

Ich hatte heute das gleiche Problem und es wurde gelöst.

root@ip-172-31-16-xxx:~# **service nginx stop**
root@ip-172-31-16-xxx:~# **service nginx status**
● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Tue 2017-12-26 08:48:21 UTC; 1min 12s ago
  Process: 5897 ExecStop=/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid (code=exited, status=0/SUCCESS)
  Process: 1220 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
  Process: 1158 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
 Main PID: 1229 (code=exited, status=0/SUCCESS)

Dec 26 06:56:32 ip-172-31-16-xxxsystemd[1]: Starting A high performance web server and a reverse proxy server...
Dec 26 06:56:32 ip-172-31-16-138 systemd[1]: Started A high performance web server and a reverse proxy server.
Dec 26 08:48:21 ip-172-31-16-138 systemd[1]: Stopping A high performance web server and a reverse proxy server...
Dec 26 08:48:21 ip-172-31-16-138 systemd[1]: Stopped A high performance web server and a reverse proxy server.

root@ip-172-31-16-xxx:~# **service apache2 start**
root@ip-172-31-16-xxx:~# **service apache2 status**
● apache2.service - LSB: Apache2 web server
   Loaded: loaded (/etc/init.d/apache2; bad; vendor preset: enabled)
  Drop-In: /lib/systemd/system/apache2.service.d
           └─apache2-systemd.conf
   **Active: active (running) since Tue 2017-12-26 08:49:51 UTC; 14s ago**
     Docs: man:systemd-sysv-generator(8)
  Process: 5845 ExecStop=/etc/init.d/apache2 stop (code=exited, status=0/SUCCESS)
  Process: 5937 ExecStart=/etc/init.d/apache2 start (code=exited, status=0/SUCCESS)
    Tasks: 55
   Memory: 6.5M
      CPU: 46ms
   CGroup: /system.slice/apache2.service
           ├─5954 /usr/sbin/apache2 -k start
           ├─5957 /usr/sbin/apache2 -k start
           └─5958 /usr/sbin/apache2 -k start

Dec 26 08:49:50 ip-172-31-16-138 systemd[1]: Starting LSB: Apache2 web server...
Dec 26 08:49:50 ip-172-31-16-138 apache2[5937]:  * Starting Apache httpd web server apache2
Dec 26 08:49:51 ip-172-31-16-138 apache2[5937]:  *
Dec 26 08:49:51 ip-172-31-16-138 systemd[1]: Started LSB: Apache2 web server.
root@ip-172-31-16-138:~#

0

Klingt so, als ob das Problem darin besteht, dass bei einem anderen Prozess Port 443 geöffnet ist. Sie müssen diesen Prozess zuerst beenden.

Linux - Wie entferne ich eine CLOSE_WAIT-Socket-Verbindung? - Stack Overflow sagt:

CLOSE_WAITbedeutet, dass Ihr Programm noch ausgeführt wird und den Socket nicht geschlossen hat (und der Kernel darauf wartet). Fügen Sie hinzu -p, netstatum die PID zu erhalten, und töten Sie sie dann stärker (bei SIGKILLBedarf mit). Das sollte deine CLOSE_WAITSteckdosen loswerden . Sie können auch verwenden ps, um die PID zu finden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.