Обзор развертывания WordPress на сервере¶
Предпосылки и предварительные требования¶
Для успешного развертывания приложения на сервере необходимо наличие следующих условий: - Операционная система на базе Debian или Ubuntu. - Права доступа пользователя root или учетная запись с правами sudo. - Установленный и настроенный пакетный менеджер apt. - Доступ к интернету для загрузки образов Docker и плагинов. - Свободные порты: 443 для HTTPS-трафика и 9000 для внутреннего соединения с PHP-FPM. - Доменное имя, настроенное на IP-адрес сервера.
Структура файлов и каталогов¶
Приложение и его компоненты размещаются в следующих директориях: - /data/wordpress — основная директория для файлов WordPress, включая плагин WooCommerce. - /root/wordpress — каталог для хранения файла конфигурации compose.yml. - /data/nginx/user_conf.d — директория для конфигурационных файлов Nginx. - /data/nginx/nginx-certbot.env — файл переменных окружения для настройки Certbot. - /etc/letsencrypt — место хранения SSL-сертификатов, смонтированное в контейнер Nginx.
Процесс установки приложения¶
Развертывание осуществляется с использованием Docker Compose. Процесс включает следующие этапы: 1. Установка Docker на сервере. 2. Создание директории /root/wordpress для конфигурации. 3. Генерация файла compose.yml с описанием сервисов. 4. Запуск контейнеров командой docker compose up -d в директории /root/wordpress.
В процессе установки также выполняется: - Скачивание архива плагина WooCommerce версии 8.7.0 с официального репозитория WordPress. - Распаковка архива и перемещение содержимого в директорию /data/wordpress/wp-content/plugins/.
Контейнеры Docker и их запуск¶
Система состоит из трех основных контейнеров, описанных в файле compose.yml:
- mariadb:
- Образ:
bitnami/mariadb:latest. - Политика перезапуска:
unless-stopped. - Данные хранятся в именованном томе
mariadb_data. -
Переменные окружения задают пользователя
wordpress, базу данныхwordpressи пароли. -
wordpress:
- Образ:
docker.io/wordpress:php8.2-fpm. - Политика перезапуска:
unless-stopped. - Порт
9000доступен только на локальном интерфейсе127.0.0.1. - Директория
/data/wordpressмонтируется в/var/www/html. - Зависит от сервиса
mariadb. -
Переменные окружения указывают хост базы данных
mariadb, пользователя, имя базы и пароли. -
nginx:
- Образ:
jonasal/nginx-certbot:latest. - Политика перезапуска:
unless-stopped. - Режим сети:
host. - Зависит от сервиса
wordpress. - Использует переменную
CERTBOT_EMAILдля регистрации в Let's Encrypt. - Монтирует тома для сертификатов и пользовательских конфигураций.
- Директория
/data/wordpressмонтируется в/var/www/html.
Для запуска всех сервисов используется команда:
выполняемая в директории/root/wordpress. Базы данных¶
База данных управляется контейнером mariadb. - Имя базы данных: wordpress. - Пользователь базы данных: wordpress. - Пароль для пользователя и root-пользователя задается через переменную окружения, совпадающую с паролем SSH-доступа к серверу. - Данные базы данных сохраняются в Docker-томе mariadb_data, что обеспечивает их сохранность при перезапуске контейнера.
Прокси серверы¶
В качестве веб-сервера и прокси используется контейнер nginx на основе образа jonasal/nginx-certbot. - Сервер слушает порт 443 с поддержкой SSL. - Конфигурация сервера генерируется динамически и размещается в /data/nginx/user_conf.d. - SSL-сертификаты автоматически выдаются и обновляются через Certbot. - Путь к корневой директории сайта: /var/www/html. - PHP-запросы пересылаются на локальный адрес localhost:9000 через FastCGI. - Индексом по умолчанию является файл index.php.
Настройки прав¶
Права доступа к файлам и директориям настроены следующим образом: - Директория /data/wordpress имеет владельца 33 (пользователь www-data) и группу 33, права доступа 0755. - Директория /root/wordpress имеет владельца root и группу root, права доступа 0640. - Файл конфигурации compose.yml имеет владельца root и группу root, права доступа 0644. - Конфигурационные файлы Nginx имеют владельца root и группу root, права доступа 0644.
Запуск, остановка и обновление¶
Управление сервисами осуществляется через Docker Compose в директории /root/wordpress.
Для запуска всех контейнеров в фоновом режиме:
Для остановки всех контейнеров:
Для просмотра логов работы сервисов:
Для обновления образов и перезапуска сервисов: