Обзор развертывания LAMP на сервере¶
Предварительные требования¶
Для успешного развертывания стека LAMP (Linux, Apache, MariaDB, PHP) требуются следующие условия:
-
Операционная система: Ubuntu или Debian.
-
Права доступа: Пользователь с правами
root. -
Порты:
-
Внешний порт
443(HTTPS) — используется для веб-трафика через прокси-сервер. -
Внутренний порт
8080— используется Apache для обработки запросов внутри сервера.
FQDN итоговой панели на домене hostkey.in¶
Для доступа к приложению по защищенному протоколу HTTPS используется автоматическое создание SSL-сертификатов через следующий шаблон:
| Параметр | Значение |
|---|---|
| Префикс | lamp |
| Домен | hostkey.in |
| Полный шаблон | lamp{Server_ID_from_Invapi}.hostkey.in |
Структура файлов и каталогов¶
В процессе установки создаются следующие директории для управления конфигурациями и данными:
-
/root/nginx— рабочая директория для Docker-контейнера с прокси-сервером. -
/data/nginx/user_conf.d— каталог с пользовательскими конфигурационными файлами Nginx (включая настройки SSL и заголовки). -
/etc/apache2/— системные файлы конфигурации веб-сервера Apache. -
/var/www/html/— корневая директория веб-контента.
Процесс установки приложения¶
Развертывание выполняется поэтапно:
-
Подготовка системы: Удаляются устаревшие репозитории и ключи Docker, а также старые версии MariaDB для предотвращения конфликтов пакетов.
-
Установка веб-сервера Apache: Устанавливается пакет
apache2. После установки Apache перенастраивается на прослушивание внутреннего порта8080, чтобы освободить порт443для Docker-контейнера. Настраиваются заголовкиX-Forwarded-Protoдля корректной работы через SSL. -
Установка базы данных MariaDB: Добавляется официальный репозиторий MariaDB (с использованием зеркала Yandex для пользователей из RU). Устанавливается серверная и клиентская части
mariadb-serverиmariadb-client. Версия:10.11. -
Установка PHP:
-
Для Ubuntu используется репозиторий
ppa:ondrej/php. -
Для Debian устанавливаются стандартные пакеты из системных репозиториев.
-
Устанавливается версия PHP
8.3и необходимые модули (mysql,curl,cgi). -
Настройка проксирования: Развертывается Docker-контейнер с Nginx для управления SSL-сертификатами через Certbot.
Права доступа и безопасность¶
-
Брандмауэр: Должен разрешать входящий трафик на порт
443. -
Пользователи: Все основные действия выполняются от имени
root. -
Безопасность Apache: Конфигурация настроена на работу в режиме обратного прокси, что скрывает внутреннюю структуру сервера.
Базы данных¶
База данных MariaDB работает как системный сервис:
-
Версия:
10.11. -
Метод подключения: Локальное подключение через сокет или TCP/IP.
-
Хранение данных: Данные хранятся в стандартных системных директориях MariaDB.
Контейнеры Docker и их запуск¶
Для обеспечения работы HTTPS используется один основной контейнер:
Nginx Certbot
-
Образ:
jonasal/nginx-certbot:latest -
Порты: Использует режим
host(проксирует трафик на порт443). -
Тома (volumes):
-
nginx_secrets:/etc/letsencrypt— для хранения SSL-сертификатов. -
/data/nginx/user_conf.d:/etc/nginx/user_conf.d— пользовательские конфигурации Nginx. -
Переменные окружения:
CERTBOT_EMAIL(email для уведомлений Let's Encrypt). -
Политика перезапуска:
unless-stopped.
Кастомные скрипты и дополнительные настройки¶
В процессе развертывания выполняются следующие действия:
-
Создается проверочный файл
/var/www/html/info.phpдля проверки работоспособности PHP. -
Выполняется автоматическая генерация конфигурационного файла
compose.ymlв директории/root/nginx. -
В конфигурацию Nginx автоматически добавляются заголовки
proxy_set_header Host $host;иproxy_set_header X-Forwarded-Proto $scheme;для корректной передачи информации о протоколе (HTTPS) веб-приложению.
Инструкция по обновлению приложения¶
Для обновления компонентов стека необходимо выполнить следующие действия:
-
Обновление PHP и Apache:
-
Обновление MariaDB:
-
Обновление прокси-сервера (Nginx/Certbot): Перейдите в директорию
/root/nginxи выполните:
Расположение конфигурационных файлов и данных¶
| Тип данных | Путь |
|---|---|
| Конфигурация Nginx (прокси) | /data/nginx/user_conf.d/{prefix}{Server_ID_from_Invapi}.{zone}.conf |
| Docker Compose файл | /root/nginx/compose.yml |
| Веб-контент | /var/www/html/ |
Доступные порты для подключения¶
| Порт | Протокол | Назначение |
|---|---|---|
443 | HTTPS | Основной доступ к веб-приложению (через Nginx) |
8080 | HTTP | Внутренний трафик Apache |
Запуск, остановка приложения¶
Управление основным прокси-сервером осуществляется через Docker:
-
Запуск:
docker compose up -d(из директории/root/nginx) -
Остановка:
docker compose down(из директории/root/nginx) -
Перезагрузка конфигурации Nginx:
docker compose exec -T nginx nginx -s reload