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

Обзор развертывания 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.

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

Развертывание выполняется в несколько этапов:

  1. Подготовка системы: Очистка устаревших репозиториев Docker и MariaDB, обновление кэша пакетов apt.

  2. Установка веб-сервера Apache: Установка пакета apache2. Веб-сервер перенастраивается на работу на внутреннем порту (по умолчанию 8080), чтобы освободить стандартные порты 80 и 443 для проксирования через Docker.

  3. Установка базы данных MariaDB: Добавление официальных репозиториев MariaDB версии 10.11 и установка пакетов mariadb-server и mariadb-client.

  4. Установка PHP:

  5. Для Ubuntu: устанавливается PHP 8.2 через репозиторий ppa:ondrej/php (пакеты php8.2, libapache2-mod-php8.2, php8.2-mysql, php8.2-curl, php8.2-cgi).

  6. Для Debian: устанавливаются стандартные пакеты php, libapache2-mod-php, php-mysql, php-curl, php-cgi.

  7. Настройка проксирования и 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.

Инструкция по обновлению приложения

Для обновления компонентов системы необходимо выполнить следующие действия:

  1. Обновление веб-сервера и PHP:

    apt update && apt upgrade
    

  2. Обновление контейнера Nginx-Certbot: Перейдите в директорию /root/nginx и выполните:

    docker compose pull && docker compose up -d
    

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

Тип ресурса Путь
Конфигурация 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.

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