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>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. Теперь ваш сервер готов показать миру свои сайты. Разве это не круто?

1
Задача
Docker SELF, 7 уровень, 5 лекция
Недоступна
Установка веб-сервера и Certbot
Установка веб-сервера и Certbot
1
Задача
Docker SELF, 7 уровень, 5 лекция
Недоступна
Настройка виртуальных хостов
Настройка виртуальных хостов
1
Опрос
Работа с веб-серверами в Linux, 7 уровень, 5 лекция
Недоступен
Работа с веб-серверами в Linux
Работа с веб-серверами в Linux
Комментарии (2)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Dmitry Panfilov Уровень 21
16 марта 2025
это вообще не должно работать, слушаем и настраиваем 80 порт, обращаемся по 443
Иван Румянцев Уровень 23
13 марта 2025
В первой задаче не хватает пункта - # 3. Проверка доступности Nginx на порту 80