Обзор развертывания LAMP на сервере¶
Данная инструкция описывает процесс установки и настройки программного стека LAMP (Linux, Apache, MariaDB, PHP) с использованием Docker-контейнера для автоматического получения SSL-сертификатов через Certbot.
Предварительные требования¶
Для успешного развертывания системы должны быть соблюдены следующие условия:
-
Операционная система: семейства Debian или Ubuntu.
-
Права доступа: пользователь с правами
rootили доступ кsudo. -
Сетевые настройки: открытые порты 80 и 443 для работы веб-сервера и получения сертификатов.
FDQN итоговой панели на домене hostkey.in¶
Для управления SSL-сертификатами используется автоматическая генерация поддоменов по следующему шаблону:
| Параметр | Значение |
|---|---|
| Префикс | lamp |
| Домен | hostkey.in |
| Полный шаблон | lamp{Server_ID}.hostkey.in |
Структура файлов и каталогов¶
В процессе установки создаются следующие директории и файлы:
-
/root/nginx/compose.yml— конфигурационный файл Docker Compose для управления контейнером Nginx-Certbot. -
/data/nginx/user_conf.d/— каталог с пользовательскими конфигурациями Nginx. -
/data/nginx/nginx-certbot.env— файл переменных окружения для контейнера. -
/etc/apache2/— системные конфигурационные файлы веб-сервера Apache.
Процесс установки приложения¶
Развертывание выполняется в несколько этапов:
-
Подготовка системы: Очистка устаревших репозиториев Docker и MariaDB, обновление кэша пакетов
apt. -
Установка веб-сервера Apache: Установка пакета
apache2. Веб-сервер перенастраивается на работу на внутреннем порту (по умолчанию8080), чтобы освободить стандартные порты 80 и 443 для проксирования через Docker. -
Установка базы данных MariaDB: Добавление официальных репозиториев MariaDB версии
10.11и установка пакетовmariadb-serverиmariadb-client. -
Установка PHP:
-
Для Ubuntu: устанавливается PHP 8.2 через репозиторий
ppa:ondrej/php(пакетыphp8.2,libapache2-mod-php8.2,php8.2-mysql,php8.2-curl,php8.2-cgi). -
Для Debian: устанавливаются стандартные пакеты
php,libapache2-mod-php,php-mysql,php-curl,php-cgi. -
Настройка проксирования и SSL: Установка Docker, создание конфигурации для контейнера Nginx-Certbot и настройка заголовков Apache (
X-Forwarded-Proto) для корректной работы через HTTPS.
Права доступа и безопасность¶
-
Веб-сервер Apache настроен на прослушивание внутреннего порта, что ограничивает прямой доступ к нему извне в обход SSL-прокси.
-
Конфигурационные файлы Nginx имеют права
0644. -
Директория
/root/nginxимеет права доступа0755.
Базы данных¶
В качестве системы управления базами данных используется MariaDB версии 10.11. Данные хранятся в системных директориях MariaDB, установленной через пакетный менеджер.
Контейнеры Docker и их запуск¶
Для обеспечения работы HTTPS используется один основной контейнер:
nginx (jonasal/nginx-certbot:latest)
-
Порты: использует режим
network_mode: hostдля прямого управления портами хоста. -
Тома (volumes):
-
nginx_secrets:/etc/letsencrypt— хранение SSL-сертификатов. -
/data/nginx/user_conf.d:/etc/nginx/user_conf.d— пользовательские конфигурации сайта. -
Переменные окружения:
CERTBOT_EMAIL(email для уведомлений Let's Encrypt). -
Политика перезапуска:
unless-stopped.
Инструкция по обновлению приложения¶
Для обновления компонентов системы необходимо выполнить следующие действия:
-
Обновление веб-сервера и PHP:
-
Обновление контейнера Nginx-Certbot: Перейдите в директорию
/root/nginxи выполните:
Расположение конфигурационных файлов и данных¶
| Тип ресурса | Путь |
|---|---|
| Конфигурация Nginx (Docker) | /root/nginx/compose.yml |
| Пользовательские конфиги сайтов | /data/nginx/user_conf.d/ |
| Переменные окружения Docker | /data/nginx/nginx-certbot.env |
| Конфигурация Apache (внутренняя) | /etc/apache2/sites-available/000-default.conf |
Доступные порты для подключения¶
| Порт | Назначение | Доступность |
|---|---|---|
| 80 | HTTP (перенаправляется на HTTPS) | Внешний |
| 443 | HTTPS (через Nginx-Certbot) | Внешний |
| 8080 | Apache (внутренний порт) | Только локально |
Запуск, остановка приложения¶
Управление контейнером прокси-сервера:
-
Запуск:
docker compose up -d(из директории/root/nginx). -
Остановка:
docker compose down(из директории/root/nginx). -
Перезагрузка конфигурации Nginx:
docker compose exec -T nginx nginx -s reload.
Управление системными сервисами:
-
Apache:
systemctl restart apache2. -
MariaDB:
systemctl restart mariadb.