Kilka miesięcy temu miałem problem z moim WampServerem, a właściwie z jednym elementem zawartego w nim stosu WAMP - serwerem Apache. Jeśli nie uruchomiłem go jako pierwszego zaraz po starcie komputera, to ikonka pakietu w trayu świeciła się na “żółto”, co nie oznaczało jakichś krytycznych błędów, ale z drugiej strony nadal nie pozwalała na pracę na localhoście. Jako, że w pewnym momencie moje zdenerwowanie tym utrudnieniem tradycyjnie przekroczyło wartość graniczną, zdecydowałem, że przeprowadzę dochodzenie i znajdę rozwiązanie problemu. Zapraszam do lektury.

Problem: Po co komu port 80?

Aby serwer Apache [zresztą każdy inny też] mógł poprawnie obsługiwać ruch na serwerze [w tym wypadku localhost], musi mieć udostępniony port o numerze 80, który jest standardowym i domyślnym kanałem ruchu poprzez protokół HTTP. Czasem jednak ten port jest z niewiadomych przyczyn zablokowany przez inne narzędzie, które teoretycznie nie powinno w ogóle go wykorzystywać.

Znalezienie problematycznej aplikacji nie jest wcale proste. Aby w ogóle zobaczyć, co się dzieje z naszym systemem, musimy wykorzystać narzędzie podglądu zdarzeń [event viewer] w Panelu Sterowania. Należy zatem uruchomić narzędzie eventvwr.msc:

I po chwili widzimy jedno lub więcej zgłoszeń od usługi Apache [Apache Service]:

Które po kliknięciu dają nasz “upragniony” komunikat o właściwym błędzie:

Rozwiązanie: Uwolnić port 80!

W tym momencie “do boju” wkraczają narzędzia konsolowe, krótko mówiąc, użytkownik się zdenerwował i chce wiedzieć, co blokuje mu jego ulubiony port. Odpaliłem więc PuTTYcyg i szybko zalogowałem się do sesji Cygwina. Wszystkim, którzy kiedykolwiek próbowali “działać” w tematyce sieciowej pod Windowsem na pewno znane jest narzędzie netstat. Posiada ono bardzo interesujący przełącznik -b, który pokazuje, jakie aplikacje, biblioteki i inne “cuda” są zarejestrowane jako użytkownicy określonych kanałów komunikacji.

Żeby przy okazji nie przeszukiwać setek niepotrzebnych linii wykorzystałem narzędzie grep, co oszczędziło masę czasu. Ale do rzeczy - polecenie:

netstat -anb | grep :80 -C 3

Zwróciło następujący wynik [oczywiście zwróciło setki linii, ale wybrałem te interesujące ;]]:

Protokół  Adres lokalny          Obcy adres        Stan           PID
TCP    0.0.0.0:80             0.0.0.0:0              NASŁUCHIWANIE    2424
[Skype.exe]

W tym momencie “żaróweczka się zapaliła” i użytkownik pomyślał sobie “aha! takie buty!” i szybko spojrzał w tray, gdzie wdzięcznie uśmiechała się do niego ikonka Skype’a. Jakby to zrobił jeden z moich kolegów z uczelni - najpierw powiedziałby: “A masz, ty brzydki!”, a potem szybko wyłączył problematyczny program:

Restartujemy WampServer:

i po wszystkim - działa! Ot i koniec dzisiejszej bajeczki. ;]

Skype: Wyłączamy nasłuchiwanie na portach 80 i 443.

W komentarzach @prachwal wspomniał, że Skype posiada opcje pozwalające wyłączyć jego niewątpliwie mało szczęśliwą opcję nasłuchiwania na portach 80 i 443. Sprawdziłem, faktycznie istnieje i ma się dobrze. Aby się do niej dostać wystarczy w opcjach wybrać pozycje Advanced > Connection:

Odznaczamy haczyk przy opisie i w tym momencie możemy być już pewni, że Skype więcej nam nie przeszkodzi. ;]

Podsumowanie.

Z dzisiejszego wpisu można wynieść o wiele więcej informacji, niż sugeruje sam tytuł. Myślę, że na podstawie zawartych tu informacji powstanie jeszcze jeden wpis, w którym skupię się na jednym z fragmentów dzisiejszego, ale to na razie tajemnica. Zapraszam na niedzielny Linkdump, a tymczasem życzę miłej pracy z serwerem Apache. ;]