JavaRush /Курси /Docker SELF /Розгортання веб-сервера з віртуальними хостами та SSL

Розгортання веб-сервера з віртуальними хостами та SSL

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

1. Підготовка середовища

Тепер настав час зібрати все до купи. Сьогодні ми розгортаємо сервер із кількома віртуальними хостами та підключаємо до них HTTPS. Будемо тестувати, відлагоджувати та налаштовувати остаточно.

Наше завдання

У цьому проєкті ми розгорнемо два сайти на одному веб-сервері:

  • example.com
  • test.com

Для кожного сайту налаштуємо віртуальний хост, підключимо HTTPS, а також покажемо кроки відлагодження та перевірки роботи. Ви готові? Погнали!

Підготовка

Перш ніж почати, переконаємося, що все налаштовано правильно:

  1. У вас вже встановлений веб-сервер (Nginx або Apache).

    • Якщо ви використовуєте Nginx:

      sudo apt-get update
      sudo apt-get install nginx
      
    • Або Apache:

      sudo apt-get update
      sudo apt-get install apache2
      
  2. Пакет Certbot для роботи з SSL встановлений.

    • Для Nginx:

      sudo apt-get install certbot python3-certbot-nginx
      
    • Для Apache:

      sudo apt-get install certbot python3-certbot-apache
      
  3. Ви маєте доступ до сервера, де налаштовані DNS для доменів example.com і test.com, або можете використовувати /etc/hosts для тестів.


2. Налаштування директорії для кожного сайту

Почнемо зі створення директорій та файлів для наших сайтів.

Крок 1: Створюємо папки для сайтів

sudo mkdir -p /var/www/example.com
sudo mkdir -p /var/www/test.com

Крок 2: Створюємо тестові HTML-файли

Створимо простий HTML-файл для кожного сайту:

example.com

sudo nano /var/www/example.com/index.html

Вміст:

<!DOCTYPE html>
<html>
<head>
    <title>Ласкаво просимо на example.com</title>
</head>
<body>
    <h1>Це example.com</h1>
    <p>Ласкаво просимо на example.com! Сайт працює і захищений за допомогою SSL!</p>
</body>
</html>

test.com

sudo nano /var/www/test.com/index.html

Вміст:

<!DOCTYPE html>
<html>
<head>
    <title>Ласкаво просимо на test.com</title>
</head>
<body>
    <h1>Це test.com</h1>
    <p>Ласкаво просимо на test.com! Сайт працює і захищений за допомогою SSL!</p>
</body>
</html>

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

Ми створимо окремий конфігураційний файл для кожного сайту.

Крок 1: Налаштування для Nginx

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

test.com

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

Вміст:

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

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

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

Активуємо конфігурацію:

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

Перезапускаємо сервер:

sudo nginx -t
sudo systemctl reload nginx

Крок 2: Налаштування для Apache

example.com

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>

test.com

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

Вміст:

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

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

Активуємо конфігурації:

sudo a2ensite example.com.conf
sudo a2ensite test.com.conf
sudo systemctl reload apache2

4. Налаштування HTTPS для сайтів

Тепер ми підключимо SSL для обох сайтів за допомогою Let’s Encrypt.

sudo certbot --nginx
# або для Apache:
sudo certbot --apache

Процес запропонує вибрати, для яких сайтів випустити сертифікати. Виберіть example.com і test.com. Certbot автоматично оновить конфігурацію серверів.


5. Перевірка роботи сайтів

Після завершення налаштування відвідайте ваші сайти:

Ви повинні побачити створені HTML-сторінки. Переконайтеся, що браузер відображає "Безпечно" (Secure) у адресному рядку.


6. Налагодження та перевірка

Якщо щось пішло не так, перевір логи:

  • Для Nginx:

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

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

Або перевір доступність через curl:

curl -I http://example.com
curl -I https://example.com

7. Продовження сертифікатів

Certbot автоматично оновлює сертифікати за допомогою системного cron. Для перевірки можна вручну запустити:

sudo certbot renew --dry-run

Ось так, крок за кроком, ми налаштували веб-сервер із підтримкою декількох сайтів та HTTPS. Ви щойно пройшли весь шлях від порожнього сервера до працюючого з віртуальними хостами та SSL. Тепер ваш сервер готовий показати світу свої сайти. Хіба це не круто?

1
Опитування
Робота з веб-серверами в Linux, рівень 7, лекція 5
Недоступний
Робота з веб-серверами в Linux
Робота з веб-серверами в Linux
Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ