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

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

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

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

  1. Подготовка системы: Удаляются устаревшие репозитории и ключи Docker, а также старые версии MariaDB для предотвращения конфликтов пакетов.

  2. Установка веб-сервера Apache: Устанавливается пакет apache2. После установки Apache перенастраивается на прослушивание внутреннего порта 8080, чтобы освободить порт 443 для Docker-контейнера. Настраиваются заголовки X-Forwarded-Proto для корректной работы через SSL.

  3. Установка базы данных MariaDB: Добавляется официальный репозиторий MariaDB (с использованием зеркала Yandex для пользователей из RU). Устанавливается серверная и клиентская части mariadb-server и mariadb-client. Версия: 10.11.

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

  5. Для Ubuntu используется репозиторий ppa:ondrej/php.

  6. Для Debian устанавливаются стандартные пакеты из системных репозиториев.

  7. Устанавливается версия PHP 8.3 и необходимые модули (mysql, curl, cgi).

  8. Настройка проксирования: Развертывается 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) веб-приложению.

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

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

  1. Обновление PHP и Apache:

    apt update && apt upgrade -y
    

  2. Обновление MariaDB:

    apt update && apt upgrade mariadb-server -y
    

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

    docker compose pull && docker compose up -d
    

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

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

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