Обзор развертывания 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 и их развертывание¶
Развертываются два основных сервиса контейнеров:
-
Контейнер стека LEMP:
-
Имя контейнера:
lemp-stack -
Образ:
adhocore/lemp:8.3 -
Сеть:
lemp-net -
Политика перезапуска:
always -
Монтированные тома:
-
/root/data:/var/lib/mysql -
/root/webroot:/var/www/html
-
-
Сопоставление портов:
-
88:80 -
3306:3306 -
5432:5432
-
-
Контейнер обратного прокси-сервера Nginx:
-
Образ:
jonasal/nginx-certbot:latest -
Политика перезапуска:
unless-stopped -
Режим сети:
host -
Переменные окружения:
CERTBOT_EMAIL=hkadm@hostkey.com
-
Монтированные тома:
-
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:
-
Запуск/Перезапуск контейнеров:
-
Остановка контейнеров:
-
Обновление образа приложения:
-
Управление прокси-сервером Nginx: Контейнер прокси-сервера Nginx работает в режиме
network_mode: host. Для его управления используйте команды Docker, направленные на контейнер, выполняющий образjonasal/nginx-certbot, обеспечив правильное монтирование директории/data/nginx.