CodeGym /Kursy /Docker SELF /Konfiguracja wirtualnych hostów

Konfiguracja wirtualnych hostów

Docker SELF
Poziom 7 , Lekcja 1
Dostępny

Konfiguracja wirtualnych hostów

1. Co to są hosty wirtualne?

Wyobraź sobie, że otwierasz przytulną kawiarnię. Większość klientów zamawia kawę ☕, ale czasami ktoś chce herbatę 🍵. Zamiast otwierać osobny lokal dla miłośników herbaty, po prostu wydzielasz mały kącik dla fanów herbaty. W świecie serwerów internetowych ta koncepcja nazywa się hostami wirtualnymi. Pozwalają one twojemu serwerowi obsługiwać kilka stron internetowych (z różnymi domenami), mając tylko jeden fizyczny serwer.

Typy hostów wirtualnych

  1. Na podstawie adresów IP — każda strona otrzymuje swój unikalny adres IP. To jak strefa VIP na koncercie: każdy klient z VIP-biletem ma swoje miejsce.
  2. Na podstawie nazw domen — kilka stron może dzielić jeden adres IP. W tym przypadku serwer używa nazwy hosta (nazwa domeny) z zapytania klienta, aby zrozumieć, którą stronę pokazać. To bardziej popularna i wygodna opcja dla większości projektów.

2. Konfiguracja hosta wirtualnego w Nginx

1. Tworzenie nowego hosta wirtualnego

Aby skonfigurować host wirtualny, najpierw trzeba utworzyć plik konfiguracyjny. Ten plik będzie zawierał informacje o tym, jak serwer powinien obsługiwać żądania dla konkretnej domeny.

Tworzymy plik dla naszej strony, na przykład example.com:

sudo nano /etc/nginx/sites-available/example.com

Dodajemy następujący blok konfiguracyjny:

server {
    listen 80;
    server_name example.com www.example.com;

    root /var/www/example.com;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

Rozkładamy kod na części:

  • listen 80;: Wskazuje, że serwer będzie nasłuchiwał na porcie 80 (domyślnie używany dla HTTP).
  • server_name example.com www.example.com;: Określa, na jakie nazwy domen serwer powinien reagować.
  • root /var/www/example.com;: Dyrektywa wskazuje folder główny, gdzie znajdują się pliki strony.
  • index index.html;: Wskazuje plik, który będzie używany jako "strona główna" strony.
  • location / { try_files $uri $uri/ =404; }: Konfiguracja routingu żądań. Jeśli plik lub katalog nie zostanie znaleziony, zwracany jest błąd 404.

2. Aktywacja konfiguracji

Teraz trzeba "włączyć" nasz host wirtualny. W Nginx robi się to za pomocą linków symbolicznych:

sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

Następnie sprawdzamy, czy nie ma błędów w konfiguracji:

sudo nginx -t

Jeśli wszystko w porządku, restartujemy serwer:

sudo systemctl reload nginx

3. Sprawdzanie działania

Tworzymy folder dla plików strony:

sudo mkdir -p /var/www/example.com
sudo nano /var/www/example.com/index.html

Dodajemy następujący prosty kod HTML:

<h1>Witamy na example.com!</h1>
<p>Twój serwer Nginx jest gotowy do pracy.</p>

Zapisujemy plik, następnie otwieramy w przeglądarce: http://example.com. Jeśli widzimy wiadomość powitalną, to znaczy, że host wirtualny działa!

4. Linki symboliczne w Linux

Linki symboliczne (lub soft links, symlinks) — to specjalne obiekty plikowe, które wskazują na inny plik lub katalog. Działają jak "skróty" w Windows, pozwalając na dostęp do docelowego pliku lub folderu przez alternatywną ścieżkę.

Linki symboliczne zawierają ścieżkę do oryginalnego obiektu, a nie sam obiekt. Jeśli oryginalny plik lub folder zostaje przeniesiony lub usunięty, link staje się "martwy", ponieważ nie wskazuje już na istniejący obiekt.

Komenda do tworzenia linku symbolicznego:

ln -s target link_name
  • target — ścieżka do oryginalnego obiektu.
  • link_name — nazwa linku.

Przykład:

ln -s /var/log/syslog log_link

Teraz przez log_link można uzyskać dostęp do pliku /var/log/syslog.

Zastosowanie:

  • Ułatwienie nawigacji.
  • Tworzenie alternatywnych punktów dostępu do plików.
  • Organizacja katalogów.

3. Konfiguracja wirtualnego hosta w Apache

1. Tworzenie pliku konfiguracyjnego

Apache korzysta z innego podejścia. Tutaj konfiguracje dla wirtualnych hostów znajdują się w folderze /etc/apache2/sites-available/. Tworzymy plik dla naszej strony:

sudo nano /etc/apache2/sites-available/example.com.conf

Dodajemy następujący kod:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com

    DocumentRoot /var/www/example.com
    <Directory /var/www/example.com>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

Krótkie wyjaśnienie:

  • <VirtualHost *:80>: Określa, że konfiguracja ma zastosowanie do wszystkich żądań na port 80.
  • ServerName i ServerAlias: Definiują główną i dodatkowe nazwy domeny dla strony.
  • DocumentRoot: Wskazuje folder główny strony.
  • <Directory>: Blok, który ustala prawa dostępu i zachowanie dla określonego folderu.

2. Aktywacja konfiguracji

Żeby aktywować konfigurację, używamy polecenia:

sudo a2ensite example.com.conf

Restartujemy serwer, żeby zmiany weszły w życie:

sudo systemctl restart apache2

3. Sprawdzanie działania

Znowu tworzymy folder i plik dla strony:

sudo mkdir -p /var/www/example.com
sudo nano /var/www/example.com/index.html

Dodajemy zawartość:

<h1>Witaj na example.com na Apache!</h1>

Zapisujemy i otwieramy w przeglądarce: http://example.com. Jeśli widzisz stronę powitalną — gratulacje, skonfigurowałeś wirtualny host w Apache!


4. Sprawdzanie i zarządzanie wieloma hostami

Konfiguracja drugiego wirtualnego hosta

Załóżmy, że chcesz obsługiwać drugą stronę: test.com. Proces jest ten sam:

  1. Tworzysz nowy plik konfiguracyjny.
  2. Podajesz unikalną nazwę domeny i folder główny.
  3. Aktywujesz konfigurację i restartujesz serwer.

Dla Nginx:

sudo nano /etc/nginx/sites-available/test.com
sudo ln -s /etc/nginx/sites-available/test.com /etc/nginx/sites-enabled/
sudo systemctl reload nginx

Dla Apache:

sudo nano /etc/apache2/sites-available/test.com.conf
sudo a2ensite test.com.conf
sudo systemctl restart apache2

Debugowanie problemów

Jeśli twoje wirtualne hosty nie działają, zacznij od sprawdzenia błędów. Na przykład:

  • Dla Nginx:

      sudo tail -f /var/log/nginx/error.log
    
  • Dla Apache:

      sudo tail -f /var/log/apache2/error.log
    

Można również użyć komendy curl, aby bezpośrednio przetestować stronę:

curl -I http://example.com

Teraz możesz skonfigurować wirtualne hosty i uruchomić wiele stron na jednym serwerze. Równocześnie z tym idzie konfiguracja HTTPS, żeby twoje strony były bezpieczne. Ale to już temat na kolejny wykład!

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION