Instalacja i konfiguracja serwera internetowego (Nginx/Apache)
1. Co to jest serwer WWW?
Dziś pogadamy o Nginx i Apache, dwóch najpopularniejszych serwerach WWW. Pod koniec wykładu Twój serwer będzie dumnie witał niczego nieświadomych użytkowników w internecie.
Zanim przeskoczymy do komend, zrozummy, co w ogóle chcemy osiągnąć. Serwer WWW to program, który przyjmuje żądania HTTP (na przykład, kiedy użytkownik wpisuje adres strony w przeglądarce), przetwarza je i odpowiada odpowiednią zawartością (strona HTML, plik lub nawet błąd „404 Not Found”). Jest on pomostem pomiędzy użytkownikami a Twoją zawartością.
Nginx kontra Apache: starcie serwerów WWW
Gdyby Nginx i Apache spotkali się w kawiarni, to:
- Nginx zamówiłby lawendowe latte i od razu załatwiłby wszystko asynchronicznie: „Daj mi żądanie, a za minutę oddam Ci plik, nie odwracaj mi uwagi!”
- Apache, z kolei, byłby bardziej tradycyjny, tworzyłby wątek dla każdego zadania i odpowiadałby uprzejmie, choć wolniej przy dużym obciążeniu.
Główne różnice:
Cechy | Nginx | Apache |
---|---|---|
Architektura | Asynchroniczna | Oparta na wątkach |
Wydajność | Wysoka przy dużym obciążeniu | Odpowiednia dla dynamicznych treści (PHP/Perl) |
Łatwość | Łatwa konfiguracja, ale z pewnymi niuansami | Bardziej uniwersalny, ale trudniejszy |
Kiedy co wybrać?
- Jeśli Twoja strona to garstka statycznych plików (np. blog lub landing page), Nginx to Twój przyjaciel.
- Jeśli pracujesz z dynamicznymi aplikacjami webowymi (np. strony PHP), Apache zapewni większą elastyczność.
2. Instalacja serwera webowego
Teraz, kiedy rozumiesz, po co to wszystko jest potrzebne, czas rozpocząć instalację. Przyjrzymy się instalacji zarówno Nginx, jak i Apache. Wybierz, co bardziej Ci się podoba, lub zainstaluj oba, żeby poczuć się jak profesjonalista.
Instalacja Nginx
Aktualizujemy listę pakietów:
sudo apt-get update
Instalujemy Nginx:
sudo apt-get install nginx
Sprawdzamy status serwera:
sudo systemctl status nginx
Jeżeli wszystko jest OK, zobaczysz coś takiego:
active (running)
.Sprawdzamy domyślną stronę: Otwórz przeglądarkę i wpisz
http://localhost
. Powinna wyświetlić się strona powitalna Nginx, co oznacza, że instalacja się udała.
Instalacja Apache
Aktualizujemy listę pakietów:
sudo apt-get update
Instalujemy Apache:
sudo apt-get install apache2
Sprawdzamy status serwera:
sudo systemctl status apache2
Podobnie jak w przypadku Nginx, status powinien być „active (running)”.
Sprawdzamy domyślną stronę: Otwórz w przeglądarce
http://localhost
. Tym razem zobaczysz domyślną stronę Apache.
3. Podstawowa konfiguracja serwera WWW
Gdzie są ukryte ustawienia?
W Nginx główny plik konfiguracyjny znajduje się pod adresem:
/etc/nginx/nginx.conf
W Apache:
/etc/apache2/apache2.conf
Spróbuj otworzyć pliki konfiguracyjne za pomocą swojego ulubionego edytora (na przykład nano
):
sudo nano /etc/nginx/nginx.conf
Tu zaczyna się twoja pierwsza przygoda: możliwe, że teraz niczego nie zrozumiesz, bo pliki konfiguracyjne wyglądają jak zaklęcia z gry RPG. Ale spokojnie – wszystko to wyjaśnimy.
Uruchamianie, zatrzymywanie i restartowanie serwerów
Jeśli wiesz, jak zarządzać usługami w Linuxie, to „połowa roboty zrobiona”. Oto podstawowe komendy do zarządzania naszymi generatorami WWW:
Dla Nginx:
sudo systemctl start nginx # Uruchamianie
sudo systemctl stop nginx # Zatrzymywanie
sudo systemctl restart nginx # Restartowanie
sudo systemctl reload nginx # Przeładowanie konfiguracji
Dla Apache:
sudo systemctl start apache2
sudo systemctl stop apache2
sudo systemctl restart apache2
sudo systemctl reload apache2
Sprawdzanie konfiguracji
Przed zrestartowaniem serwera zawsze sprawdzaj, czy nie popełniłeś błędów:
Dla Nginx:
sudo nginx -t
Dla Apache:
sudo apachectl configtest
Wszelkie błędy w konfiguracji zostaną wyświetlone – nie będziesz w stanie przypadkowo uszkodzić serwera.
4. Demonstracja: uruchamiamy naszą pierwszą stronę
Teraz zrobimy coś, co web-developerzy naprawdę uwielbiają – stworzymy stronę o niesamowicie kreatywnej nazwie „Hello Server”.
Dla Nginx
Tworzymy katalog dla strony:
sudo mkdir -p /var/www/hello sudo nano /var/www/hello/index.html
Napisz w pliku coś takiego (tak, wszystko genialne jest proste):
<h1>Hello, Nginx Server!</h1>
Konfigurujemy ustawienia:
sudo nano /etc/nginx/sites-available/hello
Oto przykład prostej konfiguracji:
server { listen 80; server_name hello.local; root /var/www/hello; index index.html; location / { try_files $uri $uri/ =404; } }
Aktywacja konfiguracji:
sudo ln -s /etc/nginx/sites-available/hello /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx
Dodaj wpis w
/etc/hosts
, żeby skonfigurować nazwę domenyhello.local
na lokalnej maszynie:127.0.0.1 hello.local
Sprawdź stronę w przeglądarce: http://hello.local.
Plik hosts zawiera mapowanie adresów IP na nazwy domen. To twój lokalny serwer DNS. Ten plik istnieje w każdym systemie operacyjnym. W systemie Windows też się znajduje, dostępny pod adresem C:\Windows\System32\drivers\etc\hosts
Dla Apache
Tworzymy katalog:
sudo mkdir -p /var/www/hello sudo nano /var/www/hello/index.html
Wypełnij plik:
<h1>Hello, Apache Server!</h1>
Tworzymy konfigurację wirtualnego hosta:
sudo nano /etc/apache2/sites-available/hello.conf
Oto przykład konfiguracji:
<VirtualHost *:80> ServerName hello.local DocumentRoot /var/www/hello <Directory /var/www/hello> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>
Aktywacja konfiguracji:
sudo a2ensite hello.conf sudo systemctl reload apache2
Dodaj wpis w
/etc/hosts
:127.0.0.1 hello.local
Sprawdź działanie: http://hello.local.
Po dzisiejszym wykładzie jesteście już gotowi samodzielnie zainstalować i skonfigurować podstawowy serwer webowy. Jeszcze trochę wysiłku – i będziecie w stanie wdrażać pełnoprawne strony i aplikacje, które już nie wyglądają jak rysunek dziecka. Gdzieś za rogiem czai się HTTPS, ale o nim później.
GO TO FULL VERSION