JavaRush /Курси /Docker SELF /Конфігурація віртуальних хостів

Конфігурація віртуальних хостів

Docker SELF
Рівень 7 , Лекція 1
Відкрита

1. Що таке віртуальні хости?

Уявіть, що ви відкрили затишну кав'ярню. Більшість клієнтів приходить за кавою ☕, але іноді хтось замовляє чай 🍵. Замість того, щоб відкрити окремий заклад для любителів чаю, ви просто виділили невеличкий куточок для них. У світі веб-серверів ця концепція називається віртуальними хостами. Вони дозволяють вашому серверу обробляти декілька сайтів (з різними доменами), використовуючи один фізичний сервер.

Типи віртуальних хостів

  1. На основі IP-адрес — кожен сайт отримує свою унікальну IP-адресу. Це схоже на VIP-зону на концерті: кожен клієнт із VIP-квитком отримує своє місце.
  2. На основі доменних імен — декілька сайтів можуть ділити одну IP-адресу. Тут сервер використовує ім'я хоста (доменне ім'я) з запиту клієнта, щоб зрозуміти, який сайт потрібно показати. Це більш поширений і зручний варіант для більшості проєктів.

2. Налаштування віртуального хоста в Nginx

1. Створення нового віртуального хоста

Щоб налаштувати віртуальний хост, спочатку потрібно створити конфігураційний файл. Цей файл міститиме інформацію про те, як сервер повинен обробляти запити для конкретного домену.

Створюємо файл для нашого сайту, наприклад example.com:

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

Додаємо такий конфігураційний блок:

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

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

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

Розбиремо код по деталях:

  • listen 80;: Вказує, що сервер буде слухати 80-й порт (за замовчуванням використовується для HTTP).
  • server_name example.com www.example.com;: Визначає, на які доменні імена сервер повинен реагувати.
  • root /var/www/example.com;: Директива вказує кореневу папку, де зберігаються файли сайту.
  • index index.html;: Вказує файл, який використовуватиметься як "головна сторінка" сайту.
  • location / { try_files $uri $uri/ =404; }: Налаштування маршрутизації запитів. Якщо файл чи директорія не знайдені, повертається помилка 404.

2. Активація конфігурації

Тепер потрібно "увімкнути" наш віртуальний хост. У Nginx це робиться через символічні посилання:

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

Потім перевіряємо, щоб не було помилок у конфігурації:

sudo nginx -t

Якщо все в порядку, перезапускаємо сервер:

sudo systemctl reload nginx

3. Перевірка роботи

Створюємо папку для файлів сайту:

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

Додаємо такий простий HTML-код:

<h1>Welcome to example.com!</h1>
<p>Your Nginx server is ready to serve.</p>

Зберігаємо файл, потім відкриваємо в браузері: http://example.com. Якщо бачимо вітальне повідомлення, значить віртуальний хост працює!

4.Символічні посилання в Linux

Символічні посилання (або soft links, symlinks) — це спеціальні файлові об'єкти, які вказують на інший файл чи директорію. Вони функціонують як "ярлики" у Windows, дозволяючи звертатися до цільового файлу чи папки через альтернативний шлях.

Символічні посилання містять шлях до оригінального об'єкта, а не сам об'єкт. Якщо оригінальний файл чи папка переміщується чи видаляється, посилання стає "битим", адже воно більше не вказує на існуючий об'єкт.

Команда для створення символічного посилання:

ln -s target link_name
  • target — шлях до оригінального об'єкта.
  • link_name — ім'я посилання.

Приклад:

ln -s /var/log/syslog log_link

Тепер через log_link можна звертатися до файлу /var/log/syslog.

Застосування:

  • Спрощення навігації.
  • Створення альтернативних точок доступу до файлів.
  • Організація каталогів.

3. Налаштування віртуального хоста в Apache

1. Створення конфігураційного файлу

Apache використовує інший підхід. Тут конфігурації для віртуальних хостів знаходяться в папці /etc/apache2/sites-available/. Створюємо файл для нашого сайту:

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

Додаємо наступний код:

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

Коротке пояснення:

  • <VirtualHost *:80>: Вказує, що конфігурація застосовується для всіх запитів на 80-й порт.
  • ServerName та ServerAlias: Визначають основне й додаткові доменні імена для сайту.
  • DocumentRoot: Вказує кореневу папку сайту.
  • <Directory>: Блок, який визначає права доступу та поведінку для зазначеної директорії.

2. Активація конфігурації

Щоб активувати конфігурацію, використовуємо команду:

sudo a2ensite example.com.conf

Перезапускаємо сервер, щоб зміни вступили в силу:

sudo systemctl restart apache2

3. Перевірка роботи

Знову створюємо папку і файл для сайту:

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

Наповнюємо його вмістом:

<h1>Welcome to example.com on Apache!</h1>

Зберігаємо, і відкриваємо у браузері: http://example.com. Якщо бачите привітальну сторінку — вітаю, ви налаштували віртуальний хост в Apache!


4. Перевірка та управління кількома хостами

Налаштування другого віртуального хоста

Припустимо, ти хочеш обслуговувати другий сайт: test.com. Процес той самий:

  1. Створюєш новий файл конфігурації.
  2. Вказуєш унікальне доменне ім'я та кореневу папку.
  3. Активуєш конфігурацію та перезапускаєш сервер.

Для 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

Для Apache:

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

Відладка проблем

Якщо твої віртуальні хости не працюють, почни з перевірки помилок. Наприклад:

  • Для Nginx:

      sudo tail -f /var/log/nginx/error.log
    
  • Для Apache:

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

Також можна скористатися командою curl, щоб протестувати сайт напряму:

curl -I http://example.com

Тепер ти можеш налаштувати віртуальні хости та запускати кілька сайтів на одному сервері. Рука об руку з цим йде конфігурація HTTPS, щоб твої сайти стали безпечними. Але це вже тема для наступної лекції!

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ