1. Підготовка середовища
Тепер настав час зібрати все до купи. Сьогодні ми розгортаємо сервер із кількома віртуальними хостами та підключаємо до них HTTPS. Будемо тестувати, відлагоджувати та налаштовувати остаточно.
Наше завдання
У цьому проєкті ми розгорнемо два сайти на одному веб-сервері:
- example.com
- test.com
Для кожного сайту налаштуємо віртуальний хост, підключимо HTTPS, а також покажемо кроки відлагодження та перевірки роботи. Ви готові? Погнали!
Підготовка
Перш ніж почати, переконаємося, що все налаштовано правильно:
У вас вже встановлений веб-сервер (Nginx або Apache).
Якщо ви використовуєте Nginx:
sudo apt-get update sudo apt-get install nginxАбо Apache:
sudo apt-get update sudo apt-get install apache2
Пакет Certbot для роботи з SSL встановлений.
Для Nginx:
sudo apt-get install certbot python3-certbot-nginxДля Apache:
sudo apt-get install certbot python3-certbot-apache
Ви маєте доступ до сервера, де налаштовані 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. Тепер ваш сервер готовий показати світу свої сайти. Хіба це не круто?
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ