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

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

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

Развертывание выполняет комплексную настройку системы:

  1. Подготовка ОС: Удаление конфликтующих репозиториев Docker и старых версий MariaDB.

  2. Установка веб-сервера Apache: Установка пакета apache2. Настройка прослушивания порта 8080 вместо стандартного 80, чтобы освободить порт 80 для Certbot.

  3. Настройка PHP: Добавление репозитория ppa:ondrej/php (для Ubuntu) и установка версии 8.3. Устанавливаются модули libapache2-mod-php8.3, php8.3-mysql, php8.3-curl и другие необходимые расширения.

  4. Установка MariaDB: Добавление официального репозитория MariaDB (с использованием зеркала Yandex для RU-региона) и установка сервера mariadb-server.

  5. Настройка проксирования: Создание конфигурации 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) необходимо выполнить обновление системных пакетов:

apt update && apt upgrade -y

Если требуется обновить контейнер Certbot:

cd /root/nginx && docker compose pull && docker compose up -d

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

  • Конфигурация 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

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