Обзор развертывания LAMP на сервере¶
Предварительные требования и основные условия¶
Перед развертыванием стека LAMP на сервере необходимо выполнить следующие требования к среде:
-
Операционная система: Ubuntu (Jammy 22.04)
-
Права доступа: Доступ root или учетная запись с правами
sudo -
Домен:
hostkey.in -
Требуемые порты:
-
Порт
8080(Внутренний порт приложения) -
Порт
443(Внешний порт HTTPS)
FQDN конечной панели¶
Приложение доступно через следующий формат полного доменного имени (FQDN) в домене hostkey.in:
-
Формат:
lamp<Server ID>.hostkey.in:443 -
Внутреннее сопоставление пути:
/ -
Внешнее сопоставление пути:
/
Структура файлов и каталогов¶
В процессе развертывания создается следующая структура каталогов и файлов:
-
Корневая директория веб-сервера:
/var/www/html -
Тестовый файл PHP info:
/var/www/html/info.php -
Пользовательская конфигурация Nginx:
/data/nginx/user_conf.d -
Хранилище секретов Nginx:
/etc/letsencrypt -
GPG-кольцо ключей MariaDB:
/usr/share/keyrings/mariadb-keyring.gpg -
Файл окружения Nginx:
/data/nginx/nginx-certbot.env
Процесс установки приложения¶
Стек LAMP устанавливается с использованием следующих компонентов и версий:
-
Веб-сервер: Apache 2
-
База данных: MariaDB 10.11
-
Язык: PHP 8.2
-
Обратный прокси: Nginx (через Docker-контейнер)
Установка включает следующие этапы:
-
Обновление и апгрейд пакетов APT
-
Установка Apache 2
-
Добавление GPG-ключа MariaDB и репозитория для версии 10.11 на Ubuntu Jammy
-
Установка
mariadb-serverиmariadb-client -
Добавление репозитория
ppa:ondrej/php -
Установка PHP 8.2 и следующих модулей:
-
php8.2 -
libapache2-mod-php8.2 -
php8.2-mysql -
php8.2-curl -
php8.2-cgi -
Перезапуск службы Apache для применения изменений
Docker-контейнеры и их развертывание¶
Обратный прокси развертывается с использованием Docker-контейнера со следующей конфигурацией:
-
Образ:
jonasal/nginx-certbot:latest -
Политика перезапуска:
unless-stopped -
Режим сети:
host -
Переменная окружения:
CERTBOT_EMAIL=hkadm@hostkey.com -
Тома (Volumes):
-
nginx_secretsсопоставлен с/etc/letsencrypt -
/data/nginx/user_conf.dсопоставлен с/etc/nginx/user_conf.d -
Внешний том:
nginx_secrets
Конфигурация контейнера определяется в файле compose.yml.
Прокси-серверы¶
Система использует Nginx в качестве обратного прокси со следующей конфигурацией:
-
Образ:
jonasal/nginx-certbot:latest -
SSL/TLS: Автоматическая обработка образом Certbot
-
Кастомный домен: Настроен через файл
nginx-certbot.env, расположенный по адресу/data/nginx/nginx-certbot.env -
Пользовательская конфигурация: Кастомные конфигурации Nginx хранятся в
/data/nginx/user_conf.d -
Внешний порт:
443(HTTPS) -
Внутренний порт:
8080
Базы данных¶
Конфигурация базы данных выглядит следующим образом:
-
Движок базы данных: MariaDB 10.11
-
Пароль root: Настроен так же, как пароль SSH (
{{ ansible_ssh_pass }}) -
Место хранения: Стандартные директории данных MariaDB на хосте
-
Подключение: Подключение через localhost для стека Apache/PHP
Настройки разрешений¶
В процессе развертывания применяются следующие права доступа:
-
Файл PHP Info: Для
/var/www/html/info.phpустановлены права0644 -
Каталог конфигурации Nginx: Доступ на чтение/запись для Docker-контейнера Nginx через монтирование томов
-
Сертификаты Let's Encrypt: Хранятся в
/etc/letsencryptчерез том Docker
Доступные порты для подключения¶
Следующие порты доступны для подключения к службам:
-
8080: Внутренний порт для веб-сервера Apache
-
443: Внешний порт для обратного прокси Nginx (HTTPS)
Запуск, остановка и обновление¶
Команды управления службами для нативных компонентов выглядят следующим образом:
-
Apache:
-
Запуск:
systemctl start apache2 -
Остановка:
systemctl stop apache2 -
Перезапуск:
systemctl restart apache2 -
Статус:
systemctl status apache2 -
MariaDB:
-
Запуск:
systemctl start mariadb -
Остановка:
systemctl stop mariadb -
Перезапуск:
systemctl restart mariadb -
Статус:
systemctl status mariadb
Для Docker-контейнера Nginx используются стандартные команды Docker:
-
Запуск:
docker compose up -d -
Остановка:
docker compose down -
Перезапуск:
docker compose restart -
Обновление образа:
docker compose pull, за которым следуетdocker compose up -d