Localhost

Localhost to specjalna nazwa oznaczająca komputer, na którym aktualnie pracujemy. Gdy wpisujemy w przeglądarce localhost, nie łączymy się z serwerem gdzieś w Internecie - ruch wraca do naszego własnego urządzenia. Z tego powodu localhost jest bardzo często wykorzystywany przez programistów do uruchamiania i testowania stron, aplikacji czy API przed udostępnieniem ich innym użytkownikom. Najczęściej kojarzy się z adresem 127.0.0.1, ale w systemach obsługujących IPv6 lokalnym adresem pętli zwrotnej jest również ::1.

Co to jest localhost?

Localhost oznacza lokalny komputer, czyli urządzenie, z którego właśnie korzystamy. Można powiedzieć, że komputer za pomocą localhost odwołuje się sam do siebie.

Najłatwiej zobaczyć to na przykładzie. Jeśli na laptopie uruchomimy lokalny serwer WWW, możemy wpisać w przeglądarce:

http://localhost

Przeglądarka nie będzie wtedy szukała serwera w Internecie. Spróbuje połączyć się z usługą działającą na tym samym komputerze.

To właśnie dlatego localhost tak często pojawia się podczas nauki programowania i tworzenia stron. Możemy uruchomić aplikację lokalnie, sprawdzić, jak działa, poprawić błędy i dopiero później przenieść ją na właściwy serwer.

W praktyce localhost nie jest więc nazwą konkretnego komputera w Internecie. Na każdym urządzeniu odnosi się do niego samego.

Localhost a 127.0.0.1 - czy to to samo?

Bardzo często można spotkać dwa zapisy:

localhost

127.0.0.1

W typowej sytuacji oba prowadzą do lokalnego urządzenia. Adres 127.0.0.1 należy do zakresu pętli zwrotnej IPv4, czyli ruch wysłany pod ten adres nie opuszcza komputera.

Dlatego te dwa adresy:

http://localhost

http://127.0.0.1

często otworzą dokładnie tę samą lokalną usługę.

Nie oznacza to jednak, że słowo localhost jest dosłownie adresem IP. Jest nazwą specjalnego przeznaczenia, która może zostać rozpoznana jako adres pętli zwrotnej.

W przypadku IPv6 odpowiednikiem lokalnego adresu pętli zwrotnej jest:

::1

Zależnie od systemu i konfiguracji localhost może więc prowadzić do adresu IPv4 127.0.0.1 albo IPv6 ::1.

Do czego służy localhost?

Najczęstsze zastosowanie localhost to tworzenie i testowanie oprogramowania. Programista nie musi za każdym razem publikować strony lub aplikacji na zewnętrznym serwerze, żeby zobaczyć rezultat zmian.

Może na przykład uruchomić lokalny serwer i pracować pod adresem:

http://localhost:8000

Tak pracują między innymi lokalne środowiska PHP, serwery uruchamiane przez frameworki Pythona czy aplikacje napisane w JavaScript.

Localhost przydaje się również podczas testowania baz danych, paneli administracyjnych, API oraz usług, które nie powinny być dostępne z zewnątrz.

Dobrym przykładem może być baza danych działająca wyłącznie na komputerze programisty. Aplikacja może łączyć się z nią przez:

localhost:3306

jeżeli baza nasłuchuje właśnie na tym porcie.

Samo użycie localhost nie oznacza jednak automatycznie, że jakaś usługa jest uruchomiona. To tylko adres lokalnego urządzenia. Nadal musi istnieć program, który czeka na połączenia.

Co oznacza localhost:3000 lub localhost:8000?

Po localhost bardzo często pojawia się dwukropek i liczba:

localhost:3000
localhost:8000
localhost:8080

Ta liczba oznacza port. Można potraktować go jak numer konkretnego wejścia do usługi działającej na komputerze.

Na jednym urządzeniu jednocześnie może działać wiele programów sieciowych. Sam adres localhost mówi, na którym komputerze znajduje się usługa, a port pomaga wskazać, z którym programem chcemy się połączyć.

Przykładowo:

localhost:3000 - aplikacja webowa
localhost:8000 - lokalny serwer testowy
localhost:8080 - inna aplikacja lub serwer

Numery są tylko przykładami. To, jaki port zostanie użyty, zależy od programu i jego konfiguracji.

Jeżeli aplikacja działa na porcie 8000, wpisanie samego:

http://localhost

może niczego nie wyświetlić. Trzeba wtedy podać właściwy port:

http://localhost:8000

Jak sprawdzić, czy localhost działa?

Najprostszy test można wykonać z poziomu Wiersza polecenia lub terminala:

ping localhost

System powinien rozpoznać nazwę jako lokalny adres pętli zwrotnej.

Można również spróbować:

ping 127.0.0.1

Trzeba jednak pamiętać, że poprawna odpowiedź na ping nie oznacza jeszcze, że działa lokalna strona WWW. Ping sprawdza zupełnie inną rzecz niż przeglądarka.

Jeśli chcemy otworzyć stronę pod:

http://localhost:8000

na porcie 8000 musi działać serwer HTTP.

Prosty lokalny serwer można na przykład uruchomić w Pythonie poleceniem:

python -m http.server 8000

Po jego uruchomieniu można wejść w przeglądarce na:

http://localhost:8000

i zobaczyć zawartość katalogu, z którego uruchomiono serwer.

Localhost nie działa - co sprawdzić?

Komunikat w rodzaju "Nie można połączyć się z tą stroną" po wpisaniu localhost nie musi oznaczać problemu z samym localhost. Bardzo często przyczyna jest prostsza: pod wskazanym adresem i portem nie działa żadna usługa.

Sprawdź, czy serwer został uruchomiony

Jeśli pracujesz nad lokalną stroną, aplikacją albo API, zacznij od sprawdzenia terminala. Serwer deweloperski powinien być uruchomiony i nie powinien wyświetlać błędu.

Przykładowo aplikacja może informować:

Server running at http://localhost:3000

Jeśli proces został zamknięty, adres przestanie działać.

Sprawdź numer portu

Bardzo łatwo pomylić porty. Serwer może działać pod:

localhost:3000

a użytkownik próbuje otworzyć:

localhost:8000

To dwa różne miejsca z punktu widzenia systemu.

Sprawdź, czy port nie jest już zajęty

Czasami aplikacja w ogóle nie uruchamia się, ponieważ inny program korzysta już z tego samego portu. W terminalu może pojawić się wtedy komunikat o zajętym adresie lub porcie.

Najprostszym rozwiązaniem bywa zamknięcie wcześniejszego procesu albo uruchomienie nowej aplikacji na innym porcie.

Spróbuj 127.0.0.1

Jeśli usługa działa, ale localhost nie jest prawidłowo rozpoznawany, można testowo wejść przez:

http://127.0.0.1:8000

oczywiście zmieniając 8000 na port używany przez daną aplikację.

Jeżeli 127.0.0.1 działa, a localhost nie, warto sprawdzić konfigurację systemu odpowiedzialną za rozpoznawanie tej nazwy.

Sprawdź, na jakim adresie nasłuchuje program

Program może być skonfigurowany tak, żeby nasłuchiwał wyłącznie na określonym interfejsie. To ma znaczenie zwłaszcza wtedy, gdy aplikacja działa po wpisaniu localhost na własnym komputerze, ale nie można otworzyć jej z telefonu czy drugiego laptopa.

Wtedy problem nie leży w localhost. Localhost z definicji prowadzi do urządzenia, na którym został użyty.

Localhost a adres IP w sieci lokalnej

To rozróżnienie jest szczególnie ważne przy testowaniu aplikacji na kilku urządzeniach.

Załóżmy, że komputer ma w domowej sieci adres:

192.168.1.25

Na tym komputerze:

localhost

oznacza właśnie ten komputer.

Ale jeśli wpiszesz localhost na telefonie, telefon nie spróbuje połączyć się z komputerem. Odwoła się do samego siebie.

Adres Gdzie prowadzi?
localhost Do urządzenia, na którym wpisano adres
127.0.0.1 Do lokalnego urządzenia przez IPv4
::1 Do lokalnego urządzenia przez IPv6
192.168.1.25 Do konkretnego urządzenia w danej sieci lokalnej

Jeżeli więc chcesz otworzyć na telefonie stronę działającą na komputerze, zwykle potrzebujesz adresu IP tego komputera w sieci lokalnej, a nie słowa localhost. Sama aplikacja musi być też skonfigurowana tak, aby przyjmować takie połączenia.

FAQ - localhost

Co to jest localhost?
Localhost to specjalna nazwa odnosząca się do urządzenia, na którym aktualnie pracujemy. Użycie localhost kieruje połączenie z powrotem do lokalnego komputera zamiast do serwera w Internecie.
Jaki adres IP ma localhost?
W IPv4 localhost jest najczęściej kojarzony z adresem 127.0.0.1. W IPv6 adresem pętli zwrotnej jest ::1.
Czy localhost i 127.0.0.1 to to samo?
W codziennym użyciu bardzo często prowadzą do tego samego lokalnego urządzenia. Localhost jest jednak nazwą, natomiast 127.0.0.1 jest konkretnym adresem IPv4 należącym do przestrzeni pętli zwrotnej.
Co oznacza localhost:3000?
Oznacza połączenie z lokalnym komputerem na porcie 3000. Na tym porcie musi działać program lub serwer, który będzie w stanie obsłużyć połączenie.
Dlaczego localhost nie działa?
Najczęściej pod wskazanym portem nie działa żaden serwer albo podano zły numer portu. Warto też sprawdzić, czy aplikacja uruchomiła się bez błędu i czy poprawnie nasłuchuje na lokalnym adresie.
Czy localhost działa bez Internetu?
Tak. Połączenie z localhost pozostaje na lokalnym urządzeniu, dlatego do działania lokalnej usługi nie jest potrzebne połączenie z Internetem.
Jak sprawdzić localhost?
Możesz użyć polecenia ping localhost albo uruchomić lokalny serwer i otworzyć jego adres w przeglądarce. Jeśli serwer korzysta z konkretnego portu, trzeba go dopisać, na przykład localhost:8000.
Dlaczego localhost nie działa na telefonie?
Localhost na telefonie oznacza sam telefon, a nie komputer znajdujący się obok. Aby wejść z telefonu na serwer uruchomiony na komputerze, zazwyczaj trzeba użyć lokalnego adresu IP komputera i odpowiednio skonfigurować serwer.