Обзор развертывания веб-сервера с PHP и MariaDB на сервере¶
Предварительные требования¶
Для успешного развертывания системы необходимо наличие сервера с операционной системой Ubuntu версии 22.04 (Jammy). Требуется наличие прав суперпользователя (root) или прав sudo для выполнения команд установки и конфигурации.
Система использует следующие сетевые порты:
-
Порт 80 для HTTP-трафика.
-
Порт 443 для HTTPS-трафика.
Процесс установки приложения¶
Установка программного обеспечения выполняется через пакетный менеджер apt и включает следующие компоненты:
-
Веб-сервер Apache версии 2.
-
Система управления базами данных MariaDB версии 10.11.
-
Интерпретатор PHP версии 8.2 с модулями для работы с MySQL, CURL и CGI.
Процесс установки включает обновление репозиториев и установку следующих пакетов:
-
apache2 -
mariadb-server -
mariadb-client -
php8.2 -
libapache2-mod-php8.2 -
php8.2-mysql -
php8.2-curl -
php8.2-cgi
После установки модулей Apache перезапускается командой systemctl restart apache2. Для проверки корректной работы PHP создается файл /var/www/html/info.php с содержимым <?php phpinfo(); ?>.
Контейнеры Docker и их запуск¶
В системе развернут контейнер Nginx, использующий образ jonasal/nginx-certbot:latest. Контейнер настроен на автоматический перезапуск, если он был остановлен не через команду остановки (restart: unless-stopped).
Контейнер работает в режиме сети хоста (network_mode: host), что позволяет ему напрямую использовать сетевой стек сервера.
Конфигурация контейнера включает следующие параметры:
-
Переменная окружения
CERTBOT_EMAILустановлена в значениеhkadm@hostkey.com. -
Файл переменных окружения загружается из пути
/data/nginx/nginx-certbot.env. -
Монтируется внешний том
nginx_secretsв директорию/etc/letsencryptдля хранения сертификатов. -
Монтируется локальная директория
/data/nginx/user_conf.dв/etc/nginx/user_conf.dвнутри контейнера для пользовательских конфигураций.
Прокси серверы¶
В качестве прокси-сервера используется контейнер Nginx с поддержкой автоматической генерации и обновления SSL-сертификатов через Certbot.
Сертификаты хранятся в директории /etc/letsencrypt, которая монтируется из внешнего тома nginx_secrets. Пользовательские конфигурационные файлы Nginx размещаются в директории /data/nginx/user_conf.d на хосте и доступны внутри контейнера по пути /etc/nginx/user_conf.d.
Базы данных¶
База данных MariaDB версии 10.11 устанавливается как системный сервис. Репозиторий для установки добавляется с использованием GPG-ключа, скачанного с официального сайта MariaDB и сохраненного в /usr/share/keyrings/mariadb-keyring.gpg.
Данные базы данных хранятся в стандартных директориях, определенных конфигурацией MariaDB для Ubuntu. Подключение к базе данных осуществляется через локальный интерфейс или сетевой интерфейс, в зависимости от настроек конфигурационного файла сервера.
Настройки прав¶
Файл проверки информации о PHP /var/www/html/info.php создается с правами доступа 0644, что позволяет всем пользователям читать файл, а владельцу — читать и записывать.
Права доступа к файлам конфигурации и данным контейнеров Nginx определяются правами на директории /data/nginx и томом nginx_secrets на хосте.