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
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.