Перейти к содержанию

Обзор развертывания LEMP на сервере

Предварительные требования и условия

Для успешного развертывания стека LEMP сервер должен соответствовать следующим критериям:

  • Операционная система: Ubuntu

  • Права доступа: Для установки Docker и управления контейнерами требуются права root или права sudo.

  • Конфигурация домена: Зона hostkey.in используется для внутреннего адресования.

  • Порты:

  • Порт 88 сопоставлен с внутренним портом веб-сервиса 80.

  • Порт 3306 открыт для доступа к базе данных MySQL.

  • Порт 5432 открыт для доступа к базе данных PostgreSQL.

  • Порт 443 настроен как внешний порт для защищенного HTTPS-трафика.

FQDN конечного приложения

Полное доменное имя (FQDN) для доступа к приложению: lamp<Server ID>.hostkey.in:443

Примечание: Замените <Server ID> на уникальный идентификатор, присвоенный вашему экземпляру сервера.

Структура файлов и директорий

Развертывание создает следующие директории для хранения постоянных данных и веб-контента:

  • /root/data: Хранит файлы баз данных и постоянные данные приложения.

  • /root/webroot: Содержит корневую директорию веб-сервера для раздачи HTML и ресурсов приложения.

  • /data/nginx: Содержит файлы конфигурации Nginx и секреты для управления SSL (используется сервисом обратного прокси-сервера).

Процесс установки приложения

Стек LEMP развертывается с использованием контейнеров Docker. Процесс установки включает:

  • Установку движка Docker на хост-систему.

  • Загрузку образа Docker adhocore/lemp версии 8.3.

  • Создание отдельной сети Docker с именем lemp-net.

  • Запуск основного контейнера приложения с именем lemp-stack с использованием образа adhocore/lemp:8.3.

Права доступа и безопасность

Безопасность и контроль доступа управляются через изоляцию сети Docker и открытие портов:

  • Приложение работает в рамках сети Docker lemp-net, обеспечивая изоляцию внутреннего трафика.

  • Пароль root для MySQL настраивается с использованием пароля SSH, передаваемого через переменные окружения при инициализации контейнера.

  • Прямой доступ к базам данных ограничен открытыми портами 3306 и 5432 на хосте.

  • Обратный прокси-сервер Nginx обрабатывает внешний трафик и выполняет терминацию SSL.

Базы данных

Стек LEMP включает интегрированные сервисы баз данных, доступные через следующую конфигурацию:

  • MySQL:

  • Порт: 3306

  • Расположение хранилища: Монтированный том в /root/data, сопоставленный с /var/lib/mysql.

  • Аутентификация: Для доступа root требуется пароль SSH, настроенный в окружении.

  • PostgreSQL:

  • Порт: 5432

  • Хранилище: Обслуживается внутри контейнера, если не смонтированы дополнительные тома.

Контейнеры Docker и их развертывание

Развертываются два основных сервиса контейнеров:

  1. Контейнер стека LEMP:

  2. Имя контейнера: lemp-stack

  3. Образ: adhocore/lemp:8.3

  4. Сеть: lemp-net

  5. Политика перезапуска: always

  6. Монтированные тома:

    • /root/data:/var/lib/mysql

    • /root/webroot:/var/www/html

  7. Сопоставление портов:

    • 88:80

    • 3306:3306

    • 5432:5432

  8. Контейнер обратного прокси-сервера Nginx:

  9. Образ: jonasal/nginx-certbot:latest

  10. Политика перезапуска: unless-stopped

  11. Режим сети: host

  12. Переменные окружения:

    • CERTBOT_EMAIL=hkadm@hostkey.com
  13. Монтированные тома:

    • nginx_secrets:/etc/letsencrypt (внешний именованный том)

    • /data/nginx/user_conf.d:/etc/nginx/user_conf.d

Прокси-серверы

Развертывание включает обратный прокси-сервер на базе Nginx с поддержкой SSL:

  • ПО: Nginx с Certbot (jonasal/nginx-certbot:latest).

  • SSL/TLS: Автоматически управляется через Certbot с использованием сертификатов Let's Encrypt.

  • Конфигурация:

  • Пользовательские конфигурации хранятся в /data/nginx/user_conf.d.

  • Секреты SSL хранятся во внешнем именованном томе nginx_secrets, сопоставленном с /etc/letsencrypt.

  • Электронная почта: Уведомления от Certbot отправляются на адрес hkadm@hostkey.com.

Настройки разрешений

Созданные на хосте директории для постоянных данных имеют следующие разрешения:

  • /root/data:

  • Владелец: root

  • Группа: root

  • Режим: 0755

  • /root/webroot:

  • Владелец: root

  • Группа: root

  • Режим: 0755

Расположение файлов конфигурации и данных

  • Веб-контент: /root/webroot

  • Данные базы данных: /root/data

  • Конфигурации Nginx: /data/nginx/user_conf.d

  • Сертификаты SSL: /etc/letsencrypt (внутри контейнера Nginx через монтирование тома)

  • Файл окружения Nginx: /data/nginx/nginx-certbot.env

Доступные порты для подключения

Следующие порты доступны на сервере хоста для подключения к сервисам: | Порт | Сервис | Описание | | :--- | :--- | :--- | | 88 | Nginx (Внутренний) | HTTP-трафик, перенаправляемый в контейнер LEMP. | | 443 | Nginx (Внешний) | HTTPS-трафик для обратного прокси-сервера. | | 3306 | MySQL | Подключение к базе данных MySQL. | | 5432 | PostgreSQL | Подключение к базе данных PostgreSQL. |

Запуск, остановка и обновление

Управление контейнерами осуществляется с использованием стандартных команд Docker:

  • Запуск/Перезапуск контейнеров:

    docker start lemp-stack
    docker restart lemp-stack
    

  • Остановка контейнеров:

    docker stop lemp-stack
    

  • Обновление образа приложения:

    docker pull adhocore/lemp:8.3
    docker rm lemp-stack
    docker run -d --name lemp-stack --network lemp-net --restart always \
      -p 88:80 -p 3306:3306 -p 5432:5432 \
      -v /root/data:/var/lib/mysql \
      -v /root/webroot:/var/www/html \
      -e MYSQL_ROOT_PASSWORD=<ssh_password> \
      adhocore/lemp:8.3
    

  • Управление прокси-сервером Nginx: Контейнер прокси-сервера Nginx работает в режиме network_mode: host. Для его управления используйте команды Docker, направленные на контейнер, выполняющий образ jonasal/nginx-certbot, обеспечив правильное монтирование директории /data/nginx.

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×