„Make_sock: nie można powiązać z adresem [::]: 443” podczas ponownego uruchamiania Apache (instalowanie trac i mod_wsgi)

92

Próbuję zainstalować trac i mod_wsgi przez SSL. Próbowałem zainstalować go ręcznie, ale nie wyszło to tak dobrze, więc zacząłem śledzić to: trac-on-ubuntu

Pominąłem część svn, ponieważ zamiast tego chciałbym użyć git. Po pierwszej edycji httpd.conf:

WSGIScriptAlias /trac /var/trac/apache/trac.wsgi

<Directory /var/trac/apache>
    WSGIApplicationGroup %{GLOBAL}
    Order deny,allow
    Allow from all
</Directory>

Zrestartowałem Apache tylko po to, aby uzyskać ten błąd:

* Restarting web server apache2                                                    

(98)Address already in use: make_sock: could not bind to address [::]:443

                                                                     [ OK ]

To nic nie dało.

 netstat -anp | grep 443 
 fuser 443/tcp

Wykonanie tego nie przyniosło niczego poza poleceniem grep, które wykonałem:

ps -aux | grep httpd

Dlaczego mówi, że coś innego korzysta z portu, kiedy nic się nie wyświetla?

EDYCJA: Będziecie się z tego śmiać. Miałem dodatkowy Listen 443 w ports.conf, którego nie powinno tam być. Usunięcie tego rozwiązało problem.

płetwa rekina
źródło
Dobrze, że znalazłeś dodatkowe oświadczenie Listen. Miałem zamiar zasugerować tylko tę możliwą przyczynę, dopóki nie przejdę do twojej edycji. :-)
Graham Dumpleton
3
Możesz ponownie wpisać swoją zmianę do odpowiedzi i zaakceptować ją. Jest to zalecany sposób oznaczania pytania jako „rozwiązanego” i niewymagającego większego wsparcia.
hasienda
2
Niestety mam ten problem, ale dodatkowa "Słuchaj 443" nie jest przyczyną ...
Cerin
1
Miałem dokładnie ten sam problem. Usunąłem najpopularniejsze 443 z ports.conf, zrestartowałem apache2 i wszystko działało.
PrestonDocks
8 lat później i inna osoba, która nie chce wymieniać swojego nazwiska, napotkała ten problem. I oczywiście 8 lat później wyszukując komunikat o błędzie, trafiasz na przepełnienie stosu. Dlatego właśnie musiałem zamieścić wiadomość;)
NME New Media Entertainment

Odpowiedzi:

228

Będziecie się z tego śmiać. Miałem dodatkowy Listen 443 w ports.conf, którego nie powinno tam być. Usunięcie tego rozwiązało problem.

płetwa rekina
źródło
44
Dzięki, mój był w /etc/httpd/conf.d/ssl.conf
Nabil Kadimi
15
I aktualizowany apache z yum, i stworzył nowy plik ssl.conf z innego słuchać 443 ....
zzarbi
4
Dziękuję ... Mam nadzieję, że pewnego dnia serwer sieciowy tak szeroko rozpowszechniony jak apache, który nie jest skomplikowanym problemem w konfiguracji
Mike Pennington,
3
W moim przypadku aktualizacja httpd na Centos spowodowała ponowną instalację ssl.conf ... ale deklarujemy Listen 443 w innym pliku konfiguracyjnym. Puppet usuwa ssl.conf ... ale marionetka działa w sekcji pasażerskiej / httpd. Agent marionetkowy nigdy nie miał szansy usunąć pliku ssl.conf, więc były 2 dyrektywy Listen 443, jak opisano tutaj.
rfay
1
Uruchomiłem certbot, który wstawił kolejny wpis 443 do mojego pliku konfiguracyjnego. Dzięki!
Senica Gonzalez
16

Dziękuję za odpowiedzi, na wersjach Apache 2.4.x jeśli zainstalowałeś ssl_module za pomocą polecenia yum, nie chcesz dodawać portu : 443 w pliku httpd.conf (głównym),

Aby znaleźć port 443 w plikach konfiguracyjnych,

# grep '443' /etc/httpd/conf.d/*

/etc/httpd/conf.d/ssl.conf:Listen 443 https
/etc/httpd/conf.d/ssl.conf:<VirtualHost _default_:443>
/etc/httpd/conf.d/ssl.conf:#ServerName www.example.com:443

# grep '443' /etc/httpd/conf/httpd.conf 
Listen 443

Po prostu usuń wiersz lub wydaj polecenie (Listen 443) z pliku httpd.conf .

lakshmikandan
źródło
1
To załatwiło sprawę! W moim przypadku ten błąd pojawił się po yum update:-P
Pathros
15

Dodaję kolejną odpowiedź, ponieważ miałem ten sam problem i rozwiązałem go w ten sam sposób: zainstalowałem SSL na apache2 przy użyciu a2enmod ssl, który wydaje się, że dodałem dodatkową konfigurację w /etc/apache2/ports.conf:

NameVirtualHost *:80
Listen 80

NameVirtualHost *:443
Listen 443

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

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

Musiałem skomentować pierwszy Listen 443po NameVirtualHost *:443dyrektywie:

NameVirtualHost *:443
#Listen 443

Ale myślę, że równie dobrze mogę na to pozwolić i skomentować innych. W każdym razie dziękuję za rozwiązanie :)

Matthieu
źródło
4

Dla wszystkich, którzy nie mają zduplikowanych dyrektyw Listen i żadnych uruchomionych procesów na porcie: sprawdź, czy przypadkowo nie dołączasz dwukrotnie ports.conf do apache2.conf (tak jak zrobiłem z powodu łączenia znaczników).

Andreas Gohr
źródło
3

Używam apache w wersji 2.4.27, również mam ten problem, rozwiązałem go poprzez modyfikację

conf / extra / httpdahssl.conf, skomentuj zawartość 18 linii (Listen 443 https), działa dobrze.

tao.zhang
źródło
Czy możesz używać https, jeśli skomentujesz tę linię?
Hamfri
1

Popełniłem błąd, nieprawidłowo nazywając plik kopii zapasowej w katalogu /etc/httpd/conf.d. W README stwierdza, że ​​przechodzi alfabetycznie przez wszystkie pliki .conf.

Utworzyłem ssl- < date > .conf (miał być kopią zapasową) i ładował się przed ssl.conf. To wiązało port: 443 w oparciu o ssl- < date > .conf i kończyło się niepowodzeniem w ssl.conf.

Po zmianie nazwy pliku kopii zapasowej na ssl.conf. < Data > usługa została uruchomiona bez problemu.

Uwaga: serwer, na którym jestem, działa pod kontrolą RHEL 6

Mike F.
źródło
Coś takiego mi się przydarzyło, więc pomyślałem, że wspomnę o tym na wypadek, gdyby to komuś pomogło. Zmieniłem nazwę ssl.conf, aby pamiętać, że został skonfigurowany do korzystania z letsencrypt. Później pozwoliłem na to, co uważałem za drobną aktualizację Apache. Ta aktualizacja umieściła ssl.conf z powrotem w conf.d, powodując konflikt w instrukcjach Listen. Nie wiem, co z tym zrobić, poza czujnością. Gdybym utkwił przy domyślnej nazwie pliku ssl.conf, aktualizacja prawdopodobnie by go zepsuła!
Brian Doherty,
Zrobiłem to samo i Apache nie mógł zacząć. Usunąłem ten plik kopii zapasowej i zaczął działać. Bardzo dziękuję za tę odpowiedź, ratujesz życie.
Umesh Patil
1

Dodam jeszcze jeden powód błędu. W httpd.conf zamieściłem wyraźnie

Include etc/apache24/extra/httpd-ssl.conf

podczas gdy nie zauważył poprzedniego symbolu wieloznacznego

Include etc/apache24/extra/*.conf

Grepping 443 tego nie znajdzie.

Vladimir Botka
źródło
0

Używam Ubuntu. Właśnie wyłączyłem tryb ssl w Apache2 i zadziałał dla mnie.

a2dismod ssl

a następnie zrestartowałem Apache2.

service apache2 restart
Baran
źródło
0

Sprawdziłem, naprawiłem i rozwiązałem -

  1. httpd.conf pod adresem /etc/httpd/conf/
  2. Sprawdzono nasłuchujący IP i port np 10.12.13.4:80
  3. Usunięto dodatkowe porty nasłuchowe
  4. Zrestartowałem usługę httpd w celu podjęcia
Rajorshe Mistry
źródło
0

Spotykam się z problemem w windows7, phpeclipse, kiedy uruchamiam XAMPP. Moje rozwiązanie to:

  • 1. Skomentuj \ xampp \ apache \ conf \ httpd.conf -> line171 -> #LoadModule ssl_module modules / mod_ssl.so

  • 2. linia539 -> #Include conf / extra / httpd-ssl.conf

lub możesz zmienić port 443 na inny

XuLu
źródło
0

Poparłem odpowiedź Matthieu

Skomentowałem #Listen 443 w pliku httpd-ssl i można uruchomić apache

Ponieważ plik ma już wartość domyślną VirtualHost : 443

Sitti Munirah Abdul Razak
źródło
0

Zamiast tego w httpd.conf:

Listen *:443

musisz napisać Listen 127.0.0.1:443 To działa dla mnie.

Aleksey Povar
źródło
Można by użyć tylko 127.0.0.1w sposób słuchać instrukcji jeśli chce ograniczyć akceptację połączeń do pętli lokalnej przyjmującej jedynie interfejs powrotem. Usunięcie zduplikowanego Listenoświadczenia, jak twierdzi wielu, jest bardziej typowym rozwiązaniem. Jeśli masz duplikaty, włączone *:443, to zmiana jednego z nich 127.0.0.1nie powinna zrobić różnicy, ponieważ drugi *:443nadal próbowałby połączyć ten sam port 127.0.0.1.
Graham Dumpleton
0

Miałem ten sam problem z powodu wielu kopii pliku ssl.conf w /etc/httpd/conf.d - Powinien być tylko jeden.

Nieznany
źródło
Przykro mi to mówić, ale to jest komentarz, a nie odpowiedź. Jeśli masz więcej informacji o rozwiązaniu, co dowiedziałeś się o sprawie, daj nam znać.
RobertS wspiera Monikę Cellio