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>Welcome to example.com</title>
</head>
<body>
<h1>This is example.com</h1>
<p>Welcome to example.com! The site is up and secure with SSL!</p>
</body>
</html>
test.com
sudo nano /var/www/test.com/index.html
Содержимое:
<!DOCTYPE html>
<html>
<head>
<title>Welcome to test.com</title>
</head>
<body>
<h1>This is test.com</h1>
<p>Welcome to test.com! The site is running and secure with 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. Теперь ваш сервер готов показать миру свои сайты. Разве это не круто?
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ