1. Що таке віртуальні хости?
Уявіть, що ви відкрили затишну кав'ярню. Більшість клієнтів приходить за кавою ☕, але іноді хтось замовляє чай 🍵. Замість того, щоб відкрити окремий заклад для любителів чаю, ви просто виділили невеличкий куточок для них. У світі веб-серверів ця концепція називається віртуальними хостами. Вони дозволяють вашому серверу обробляти декілька сайтів (з різними доменами), використовуючи один фізичний сервер.
Типи віртуальних хостів
- На основі IP-адрес — кожен сайт отримує свою унікальну IP-адресу. Це схоже на VIP-зону на концерті: кожен клієнт із VIP-квитком отримує своє місце.
- На основі доменних імен — декілька сайтів можуть ділити одну 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. Процес той самий:
- Створюєш новий файл конфігурації.
- Вказуєш унікальне доменне ім'я та кореневу папку.
- Активуєш конфігурацію та перезапускаєш сервер.
Для 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, щоб твої сайти стали безпечними. Але це вже тема для наступної лекції!
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ