Próbuję skonfigurować maszynę wirtualną z systemem Ubuntu 12.04. Mam dwa wirtualne hosty skonfigurowane przy użyciu portu 80, ale Apache się nie uruchomi.
Otrzymuję ten błąd:
(98) Address already in use: make_sock: could not bind to address 0.0.0.0:80
Dane wyjściowe netstat -tulpn
pokazują, że nic nie używa portu 80. Co może być przyczyną tego?
12.04
apache2
virtualization
Strzelec Barnes
źródło
źródło
grep -ri listen /etc/apache
isudo netstat -ntlp | grep 80
.grep -ri listen /etc/apache2
wyjścia: 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
nie generuje nic.Odpowiedzi:
Upewnij się, że nie deklarujesz
Listen 80
dwa razy w plikach .conf.Na przykład możesz mieć go zarówno w, jak
ports.conf
i w gospodziesites-enabled/www.conf
.Aby się dowiedzieć, użyj:
grep -ri listen /etc/apache2
Trzymaj
Listen 80
w jednym miejscu.źródło
Odpowiadając na sposób, w jaki rozwiązałem ten problem. Może być pomocny dla kogoś w przyszłości.
Próbować
netstat -ltnp | grep :80
To zwróci coś w rodzaju
Następnie uruchomić
Gdzie 1047 to pid programu działającego na porcie 80. Możesz zastąpić pid, który uzyskałeś
netstat
źródło
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN -
Kiedy miałem ten problem, okazało się, że mój Apache nie mógł się uruchomić podczas rozruchu, ponieważ miałem witrynę SSL, która wymagała podania hasła do certyfikatu.
Dobrym sposobem na stwierdzenie, czy tak jest w twoim przypadku, jest uruchomienie
ps -ef | grep apache
: jeśli to zwróci procesy, które wyglądają tak,/bin/bash /usr/share/apache2/ask-for-passphrase mysite.com:443 RSA
to czeka na podanie hasła w terminalu, którego nigdy nie zobaczysz.Najpierw zabiłem zawieszony proces (wysłanie a
kill -HUP
do identyfikatora procesu dla procesu / usr / sbin / apache2 powinno wystarczyć, aby zabić również inne, aleps -ef | grep apache
dla pewności wykonaj inne ).Następnie wykonałem instrukcje zawarte w tym poście, aby utworzyć plik hasła SSL, który nie wymagał podania hasła. Potem
service apache2 start
zadziałało dobrze, a Apache zaczął poprawnie po ponownym uruchomieniu.źródło
Wystąpił ten błąd podczas nowej instalacji podczas uruchamiania Apache2 Ubuntu 12.10.
To błąd w apache2. Zawiesza się w tle. Oto mój przewodnik, gdzie mogą znajdować się błędy w oprogramowaniu.
Oto błąd, który dostałem:
Adres już w użyciu? Co może go używać? Sprawdź to:
Oznacza to, że apache2 uniemożliwia uruchomienie apache2. Dziwaczny. To potwierdzi:
Tak, w tym przypadku działa apache2, próbowałem uruchomić apache2 po raz drugi na tym samym porcie.
To, co mnie dezorientuje, to to, że
service
raporty, że apache2 NIE działa:A kiedy pytasz apache2ctl o jego status, zawiesza się.
Wydaje się, że Ubuntu ma problem z zarządzaniem apache2 podczas uruchamiania. Czas zatrzymać apache2:
Wielka wskazówka! Próbujesz zatrzymać apache2, a on utracił identyfikator procesu! Więc Ubuntu nie może zatrzymać apache2, ponieważ nie wie gdzie jest!
Można by pomyśleć, że ponowne uruchomienie go naprawi, ale tak się nie dzieje, ponieważ apache2 uruchamia się podczas uruchamiania i zawiesza. Normalny proces uruchamiania apache2 nie działa poprawnie.
Jak to naprawić?
Udało mi się to naprawić , analizując dane
ps
wyjściowe polecenia. Zauważ, żeps
polecenie mówi nam, że proces ten został uruchomiony przez „/etc/rc2.d/S91apache2 start”.To jest program obrażający, który wymaga szybkiego kopnięcia.
/etc/rc2.d/S91apache2
jest dowiązaniem symbolicznym używanym do uruchomienia apache2 podczas uruchamiania komputera. Z jakiegoś powodu wydaje się, że uruchamia apache2, a następnie się zawiesza. Więc musimy to powiedzieć, żeby tego nie robić.Więc spójrz na to
/etc/rc2.d/S91apache2
.Jest to symboliczny link, którego nie chcemy, żeby tam był. Zrób to, aby zapobiec uruchamianiu apache2 podczas uruchamiania:
Uruchom ponownie komputer, aby upewnić się, że apache2 nie uruchomi się i nie zawiesi. Ok dobrze. Teraz MUSISZ przywrócić apache2 z powrotem tak, jak było, ale to spowodowałoby, że znów się nie powiedzie.
Zamiast tego uruchom apache2 w następujący sposób:
A apache2 ponownie tworzy kopie zapasowe i wyświetla strony. Wydaje się, że istnieją poważne błędy w Apache2 / Ubuntu 12.10, które powodują, że apache2 uruchamia się i zawiesza. Jest to obejście, jak sądzę, poprawką jest uzyskanie nowszych wersji apache2 i Ubuntu i nadzieja na najlepsze.
źródło
Miałem serwer Nginx nasłuchujący na moim serwerze AWS EC2, myślę, że został skonfigurowany, kiedy budowałem EC2, dlatego otrzymywałem błąd już używanego adresu. Zatrzymałem więc usługę i uruchomiłem usługę Apache2:
źródło
Zrozumiałem to. Miałem zduplikowane polecenia Listen 80 zarówno w httpd.conf, jak i ports.conf
Ponadto, kopiując plik konfiguracyjny dla tego serwera, który jest wirtualizowany, zaniedbałem zauważenia, że katalog dziennika błędów został zmieniony. Przeglądając ten dziennik błędów, zauważyłem, że katalog
mime.types
pliku konfiguracyjnego jest niepoprawny w moimhttpd.conf
pliku. Zaktualizowałem ten parametr i serwer zaczął działać poprawnie.źródło
Listen 80
polecenia zarówno w moim, jakhttpd.conf
iports.conf
Oznacza to, że Twój port 80 jest już używany, albo zmień port dla Apache2 (co nie jest zalecane), edytując:
Lub zamknij aplikację działającą na porcie 80:
Aby znaleźć to, co działa na porcie 80.
źródło
netstat -antp | grep 80
również nic nie produkuje.Tylko wskazówka dla każdego, kto być może korzysta z VirtualBox z sieciami NAT. Zauważyłem, że ustawiłem regułę NAT między moim gościem a gospodarzem, wiążąc port
źródło
Nie tylko powielają wzmianki o
ale także wspomnieć o tym oprócz Listen 80
źródło