Обзор развертывания LAMP на сервере¶
Предварительные требования¶
Для успешного развертывания стека LAMP (Linux, Apache, MariaDB, PHP) требуются следующие условия:
-
Операционная система: Ubuntu или Debian.
-
Права доступа: пользователь с правами
root. -
Доступные порты:
-
80— используется для получения SSL-сертификатов (Certbot). -
443— внешний порт для HTTPS трафика. -
8080— внутренний порт, на котором работает Apache.
FQDN итоговой панели на домене hostkey.in¶
Для доступа к приложению через защищенное соединение используется следующий шаблон домена:
| Параметр | Значение |
|---|---|
| Префикс | lamp |
| Домен | hostkey.in |
| Полный шаблон | lamp{Server_ID_from_Invapi}.hostkey.in |
Структура файлов и каталогов¶
В процессе работы системы используются следующие директории:
-
/etc/apache2/— конфигурационные файлы веб-сервера Apache. -
/data/nginx/user_conf.d/— пользовательские конфигурации прокси-сервера Nginx (включая настройки Host и X-Forwarded-Proto). -
/root/nginx/— рабочая директория Docker Compose для контейнера Certbot. -
/var/www/html/— корневая директория веб-сервера, где размещаются файлы сайта (например,info.php).
Процесс установки приложения¶
Развертывание выполняет комплексную настройку системы:
-
Подготовка ОС: Удаление конфликтующих репозиториев Docker и старых версий MariaDB.
-
Установка веб-сервера Apache: Установка пакета
apache2. Настройка прослушивания порта8080вместо стандартного80, чтобы освободить порт80для Certbot. -
Настройка PHP: Добавление репозитория
ppa:ondrej/php(для Ubuntu) и установка версии8.3. Устанавливаются модулиlibapache2-mod-php8.3,php8.3-mysql,php8.3-curlи другие необходимые расширения. -
Установка MariaDB: Добавление официального репозитория MariaDB (с использованием зеркала Yandex для RU-региона) и установка сервера
mariadb-server. -
Настройка проксирования: Создание конфигурации Docker Compose для управления SSL-сертификатами через Nginx.
Права доступа и безопасность¶
-
Веб-сервер Apache настроен на работу с внутренним портом
8080, что ограничивает прямой доступ к нему в обход защищенного соединения. -
Настроена передача заголовков
X-Forwarded-Protoдля корректной работы PHP-приложений, работающих за прокси-сервером. -
Конфигурационные файлы Nginx имеют права доступа
0644.
Базы данных¶
В качестве системы управления базами данных используется MariaDB версии 10.11. Данные хранятся в системных директориях MariaDB, установленной через пакетный менеджер.
Контейнеры Docker и их запуск¶
Для обеспечения работы SSL-сертификатов используется контейнер:
| Имя образа | Порты | Тома (volumes) | Переменные окружения | Политика перезапуска |
|---|---|---|---|---|
jonasal/nginx-certbot:latest | network_mode: host | nginx_secrets:/etc/letsencrypt, /data/nginx/user_conf.d:/etc/nginx/user_conf.d | CERTBOT_EMAIL | unless-stopped |
Кастомные скрипты и дополнительные настройки¶
В процессе развертывания выполняются следующие действия:
-
Настройка Apache: Перенаправление прослушивания портов в
/etc/apache2/ports.confи настройка виртуального хоста на порт8080. -
Генерация конфигурации Nginx: Автоматическое создание файла
compose.ymlв директории/root/nginx/. -
Инъекция заголовков: В конфигурационные файлы Nginx автоматически добавляются строки
proxy_set_header Host $host;иproxy_set_header X-Forwarded-Proto $scheme;для корректной работы протокола HTTPS.
Инструкция по обновлению приложения¶
Для обновления основного стека (Apache, MariaDB, PHP) необходимо выполнить обновление системных пакетов:
Если требуется обновить контейнер Certbot:
Расположение конфигурационных файлов и данных¶
-
Конфигурация Apache:
/etc/apache2/ -
Конфигурация Nginx (прокси):
/data/nginx/user_conf.d/ -
Данные MariaDB: системные директории MariaDB.
Доступные порты для подключения¶
| Порт | Назначение |
|---|---|
80 | HTTP (для проверки Certbot) |
443 | HTTPS (основной доступ к сайту) |
8080 | Внутренний порт Apache |
Запуск, остановка приложения¶
Управление веб-сервером Apache:
-
Запуск:
systemctl start apache2 -
Остановка:
systemctl stop apache2 -
Перезагрузка:
systemctl restart apache2