Nie można uruchomić Apache na Ubuntu 12.10: brak dostępnych gniazd nasłuchiwania


9

Nie mogę uruchomić apache2 zainstalowanego za pomocą apt-get. Otrzymuję ten sam błąd w 2 oddzielnych instalacjach Ubuntu 12.10, jednej na komputerze stacjonarnym, drugiej uruchomionej w 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 mówi:

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 mówi:

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>

Dzięki za pomoc.

EDYCJA 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)

Odpowiedzi:


9

wystarczy usunąć nginx (3 pakiety), to wszystko .....

Twoim głównym problemem jest brak dostępnych gniazd nasłuchiwania. Masz do czynienia z tym problemem, ponieważ inna aplikacja / usługa uzyskała port 80 na Twoim Ubuntu Server.

Teraz musisz zabić proces, który uzyskał port 80. Możesz to łatwo znaleźć za pomocą następującego polecenia: -

sudo netstat -ltnp | grep ': 80'

Zwróci coś w stylu: -

tcp 0 0 127.0.0.1:80 0.0.0.0:* LISTEN 1588 / aolserver4-nsd

w powyższym przypadku proces nr 1588 uzyskał port 80 , musisz zabić ten proces 1588.

zabicie sudo -9 1588

Teraz możesz uruchomić serwer Apache, wykonując polecenie

sudo /etc/init.d/apache2 start


3
Dzięki! Trochę mnie to zaskoczyło, ponieważ mówi, że „dziennik błędów Apache może zawierać więcej informacji”, ale nic tam nie ma, również „Nie można otworzyć dzienników”, ale nie ma informacji, który plik dziennika (apache? Vhosts '? ). Okazuje się, że nodejs nadal korzysta z portu 80 ..
andyk

Dostaję ten sam błąd, ale netstat nic nie wymienia przy użyciu portu 80 ...
Cerin

@Cerin powinieneś spróbować sudo przed netstat.
Vikas Dwivedi

2

Aby rozwiązać problem „apache2: nie można wiarygodnie określić w pełni kwalifikowanej nazwy domeny serwera, używając błędu 127.0.1.1 dla ServerName” , uprzejmie podaj następujące informacje w pliku apache2.conf

ServerName HOSTNAME_OF_THE_SERVER

Zapisz plik conf i zrestartuj serwer apache.

Uprzejmie opublikuj dane wyjściowe sudo netstat -ano | grep '443'

Upewnij się również, że jeśli konfigurujesz apache do nasłuchiwania na porcie 443 / ssl, powinieneś mieć skonfigurowany certyfikat ssl na serwerze apache.


Opublikowałem wyjście sudo netstat -ano | grep '443'. Nazwa serwera nie jest problemem. Dziękuję Ci bardzo.
michalstanko

1

Widziałeś:

Unable to open logs

Myślę, że możesz sprawdzić uprawnienia na / var / log / apache2!


Jestem trochę nowicjuszem, ale sprawiłem, że /var/log/apache2katalog rekurencyjnie jest zapisywany w świecie, a potem spróbowałem uruchomić go sudo service apache2 startponownie, a dane wyjściowe nadal Unable to open logstam były. Jakieś sugestie? Dzięki.
michalstanko


1

Wygląda na to, że z tyłu może działać usługa Nginx. Więc zatrzymaj nginx „service nginx stop”, a teraz spróbuj uruchomić usługę apache2, powinna pojawić się bez żadnych problemów. (zatrzymaj się, jeśli uruchomione są inne usługi aplikacji)

Miałem dzisiaj ten sam problem i został on rozwiązany.

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

Wygląda na to, że problem polega na tym, że inny proces ma otwarty port 443. Najpierw musisz zabić ten proces.

linux - Jak usunąć połączenie gniazda CLOSE_WAIT - Przepełnienie stosu mówi:

CLOSE_WAIToznacza, że ​​twój program wciąż działa i nie zamknął gniazda (a jądro czeka na to). Dodaj, -paby netstatuzyskać pid, a następnie zabij go mocniej (za pomocą, SIGKILLjeśli to konieczne). To powinno pozbyć się twoich CLOSE_WAITgniazd. Możesz także użyć psdo znalezienia pid.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.