Истории успеха наших клиентов — лучшие проекты
Вход/ Регистрация

Как установить WordPress с помощью Docker

9810
13 минут чтения
Средний рейтинг статьи: 2.6

WordPress — это одна из множества популярных систем управления контентом на сайте (CMS), написанная на PHP. WordPress является open-source продуктом. Хранение данные в CMS основано на реляционной базе данных — MySQL.

Предназначение WordPress не заканчивается управлением блогами, как это принято считать. Благодаря системе тем и плагинов базовый функционал CMS может быть расширен до уровня более сложных проектов, что делает WordPress самой популярной CMS в мире — во всяком случае, по мнению некоторых аналитиков.

Основой WordPress всегда служит некий технологический стек серверного ПО. Самым распространенным можно считать LAMP — Linux, Apache, MySQL, PHP.

Ручная установка этих компонентов может оказаться не очень практичной при регулярном развертывании приложения на серверных машинах. Поэтому, лучше всего устанавливать технологический стек WordPress, подобный LAMP, через командную строку с применением системы контейнеризации Docker и ее компонентов.

Таким образом можно автоматизировать процесс установки и работы CMS, превращая WordPress в много-контейнерное приложение. Если вы разрабатываете продукт с использованием Docker, то после развертывания приложение однозначно заработает везде.

В этой инструкции мы рассмотрим развертывание тех-стека WordPress с применением Docker и Docker Compose. Однако, это будет не совсем LAMP — проект в этой инструкции основывается на таких компонентах, как Nginx, PHP, MySQL и конечно же WordPress.

Заметим, что данная инструкция предназначена для UNIX-подобных операционных систем — в частности, Debian и Ubuntu.

VDS и VPS

Гибкие виртуальные серверы с почасовым
биллингом по всему миру: Россия, Азия и Европа.

1. Установка компонентов Docker

Стоит упомянуть, что у нас есть отдельная подробная инструкция об инсталляции Docker на Ubuntu.

Шаг 1. Прежде всего рекомендуется предварительно обновить список существующих пакетов на вашей серверной машине:

    

Шаг 2. Для гарантии корректного выполнения процесса установки, нам потребуются несколько ключевых пакетов для обеспечения работоспособности HTTPS-соединения:

    

Удаление старых версий Docker

Шаг 3. Для предотвращения возможных проблем, стоит проверить, установлена ли в вашей системе одна из старых версий Docker (docker-engine и docker.io, которые считаются устаревшими, в отличие от docker-ce и docker-ee). Если она присутствует, рекомендуется удалить ее:

    

Установка движка Docker

Шаг 4. Теперь можно взять ключ GPG от официального репозитория Docker и внести его в систему:

    

А после включить в список пакетов и сам репозиторий:

    

Шаг 5. Давайте еще раз обновим перечень пакетов, которые можно установить:

    

Все! Теперь можно загрузить сам Docker:

    

Для проверки наличия установленного Docker-а можно воспользоваться простой командой, которая выведет версию в терминал:

    

Установка компонента Docker Compose

Docker Compose — это инструмент, позволяющий автоматизировать процесс управления контейнерами за счет использования специального файла-инструкции формата YAML.

В какой-то степени он похож на package.json в Node, но работает несколько шире — вы определяете службы, их зависимости, дисковые пространства и переменные окружения. А Docker Compose, следуя описаниям, выполняет автоматическое развертывание. В общем, именно это и обеспечивает переносимость разрабатываемых проектов.

Обратите внимание, что отдельная установка Docker Compose не требуется, если вы используете последние версии Docker. Вместо отдельного Compose V1 пакетом Docker CLI поставляется Compose V2, написанный на Go.

 

В этом случае вместо привычной команды docker-compose используется docker compose. Если по каким-то причинам вам требуется старая версия Compose V1, тогда инструкция ниже для вас.

Шаг 6. Из официального репозитория GitHub загрузим сначала исполняемый файл с новейшей версией docker-compose:

    

Шаг 7. Далее установим соответствующие права на использование этого файла:

    

Установку можно считать фактически выполненной. В последующем загруженный файл будет обрабатывать файлы описаний, а также выполнять запуск или остановку контейнеров в соответствии с нашими командами.

Шаг 8. Для обеспечения дополнительной надежности рекомендуем попробовать запустить файл, чтобы получить информацию о версии:

    

2. Конфигурация Nginx

Прежде чем приступить к описанию структуры контейнеров в файле Docker Compose, мы должны подготовить все требуемые каталоги и файлы настроек для используемых в приложении компонентов.

Особое значение имеет один из главных файлов конфигурации, который содержит настройки и маршрутизацию веб-сервера Nginx.

Создание каталогов

Шаг 1. Давайте создадим в домашней директории отдельный каталог для нашего приложения и сразу перейдем в него:

    

Здесь же создадим дополнительные подкаталоги внутри которых будут распределены данные Nginx, MySQL и WordPress.

    

У нас имеется директория, предназначенная специально для хранения Nginx, а также отдельная папка, где будут сохраняться лог-файлы сервера. В каталоге с названием data будут размещены основные файлы CMS и базы данных.

Написание конфигурационного файла Nginx

Шаг 2. Теперь мы создадим конфигурационный файл для Nginx в ранее созданной директории, предназначенной для него:

    

Шаг 3. Добавим минимальное описание в файл — исключительно под поставленные в этой инструкции задачи. В дальнейшем вы сможете расширять ее по мере роста сложности ваших проектов:

    

Прослушиваемый порт — стандартный 80-й. При этом, директива default_server и настройка _ в server_name предписывает Nginx обрабатывать любые (с любым значением host в HTTP-заголовках) запросы на 80 порту.

Корневой каталог с файлами, которые будет отдавать сервер, находится по адресу /var/www/html, при этом среди них есть index.php — своего рода entry point (входная точка) в WordPress.

Далее указаны пути до файлов с логами — лог с запросами и лог с ошибками.

Стандартный route направляет пользователя во входную точку index.php, передавая также все аргументы (query string) из адреса. Соответственно, все запросы на php-файлы передаются непосредственно в контейнер PHP по протоколу FastCGI.

3. Описание необходимых образов и контейнеров 

Описание зависимостей в файле docker-compose

Нормальное функционирование WordPress подразумевает совместную работу 3 основных компонентов из ранее описанного тех-стека — сервер Nginx, сам WordPress и база данных MySQL.

При этом MySQL является основополагающим компонентом (сервер может быть любым, например Apache) приложения, т.к. все данные, которыми оперирует WordPress, располагаются именно там.

Поэтому потребуется дисковое пространство как для MySQL, так и для файлов тем оформления и плагинов, которые являются неотъемлемой частью CMS.

Именно по той причине, что WordPress является многокомпонентным приложением, для переносимого развертывания его структуры нам и понадобится docker-compose.

Шаг 1. Описание всех зависимостей мы разместим в специальном файле docker-compose.yml — создадим его:

    

Шаг 2. Сам файл наполним следующим содержимым:

    

Тонкости написания yml-файлов находятся за пределами этой статьи — это отдельная обширная тема, о которой можно почитать в официальной справке. Пройдемся лишь по основным пунктам.

  • В данном случае мы сначала объявляем Nginx, WordPress и MySQL в качестве ключевых служб (контейнеров) приложения, при этом обязательно указываем их взаимосвязи. Например, для работы WordPress однозначно необходимо наличие базы данных.
  • Для WordPress и Nginx мы используем самые актуальные версии контейнеров. По умолчанию мы связываем их, резервируя 80-й порт для веб-трафика.
  • Когда вы вводите URL-адрес в браузер, контейнеры Nginx и WordPress работают совместно, последовательно обрабатывая запросы и возвращая пользователю сгенерированные веб-страницы в качестве ответа.
  • Служба базы данных представляет собой образ MySQL версии 5.7. Соответственно, мы не забываем указать переменные среды с необходимыми учетными данными для коммуникации контейнеров между собой.
  • Внутри каждой службы в параметре volumes объявляется дисковое пространство — каталоги, в которых хранятся рабочие файлы Nginx, WordPress и MySQL. Кстати, во время использования CMS в реальном проекте важно регулярно делать резервную копию (бекап) этих каталогов.

Необязательный компонент phpMyAdmin

Стоит упомянуть, что опционально вы можете включить в yml-файл образ phpMyAdmin:

    

Это веб-интерфейс, который является своего рода дополнением к MySQL — он позволяет управлять базой данных не через терминал и SQL-запросы, а визуально в окне браузера.

В нашем случае phpMyAdmin не является обязательным компонентом, но в более сложных проектах такой функционал может оказаться полезен.

Загрузка образов и запуск контейнеров

Шаг 3. Теперь можно запустить этот файл — Docker Compose сформирует из всех описанных образов рабочие контейнеры и соответствующим образом сконфигурирует их:

    

Первый запуск этой команды займет значительное время, т.к. необходимые файлы будут загружаться с Docker Hub.

Если Docker Hub недоступен, можно использовать наш бесплатный прокси, который возобновляет этот доступ. 

Шаг 4. По завершению процесса стоит убедиться, что загруженные контейнеры действительно запущены:

    

Если все корректно, то в терминале появится список работающих контейнеров, названия которых будут соответствовать описаниям в файле docker-compose.yml.

Возможность перезапуска контейнеров

Каждый из контейнеров можно перезапускать в случае необходимости. Например, если вы обновите конфигурацию Nginx, то для ее применения потребуется рестарт веб-сервера.

    

Однако, предстоит еще один этап. Сразу после завершения загрузки и запуска контейнеров появится возможность открыть веб-интерфейс WordPress — через него будет выполняться дальнейшая конфигурация CMS.

4. Завершение установки WordPress через веб-интерфейс

Шаг 1. В адресной строке веб-браузера нужно ввести адрес вашего сервера, после чего появится экран установки WordPress.

Сперва нужно будет выбрать язык, на котором будет работать CMS. Скорее всего вам будет нужен русский или английский.

Шаг 2. Далее жмем «Продолжить». Откроется страница с основными настройками WordPress: название сайта, имя пользователя, пароль пользователя (либо сгенерировать автоматически) и email-адрес.

Есть еще особый пункт внизу, Search Engine Visibility, запрещающий поисковым системам индексировать ваш сайт. Если ваш сайт не является приватным порталом, индексацию стоит оставить, чтобы пользователи могли попасть на ваш сайт из поисковой выдачи. Кстати, в качестве имени пользователя лучше не использовать такие распространенные имена, как «admin» или «root» — они упростят задачу взлома злоумышленникам.

Кстати, в некоторых случаях может появиться экран, запрашивающий информацию о базе данных, предварительно созданной в phpMyAdmin. Однако, в нашем случае его не должно быть, т.к. мы заранее прописали все необходимые переменные среды в файле docker-compose.yml.

Шаг 3. Если все поля заполнены корректно, кнопка «Установить WordPress» перекинет вас на страницу авторизации. После входа в систему вы окажетесь в панели администратора. В ней много различных пунктов, но ее нельзя назвать сложной.

Дальнейшее использование WordPress заключается именно в оперировании множеством настроек внутри панели администратора. Исключением можно считать случай, когда PHP-переменные вручную проставляются в разметке страницы, тем самым превращая сырую HTML-верстку в полноценную тему WordPress, которую сможет установить любой желающий.

Если вы все таки установили phyMyAdmin, то его веб-интерфейс будет доступен по адресу вашего сервера, но на 8081 порту.

Подготовили для вас выгодные тарифы на облачные серверы

Cloud MSK 15

477 ₽/мес

Процессор
1 x 3.3 ГГц
Память
1 ГБ
NVMe
15 ГБ
Канал
1 Гбит/с
Публичный IP
Cloud MSK 30

657 ₽/мес

Процессор
1 x 3.3 ГГц
Память
2 ГБ
NVMe
30 ГБ
Канал
1 Гбит/с
Публичный IP

Заключение

Хотя существует множество способов развернуть локальную среду для разработки приложений на WordPress, Docker резко контрастирует на их фоне благодаря функциям компонентного разделения, кроссплатформенности и переносимости.

С помощью Docker можно настраивать сразу несколько сред рядом друг с другом, используя разные компоненты. Каждый из них можно включать или исключать из используемого стека в зависимости от потребностей и задач.

В этой инструкции мы использовали контейнеры Docker для развертывания всех необходимых компонентов приложения на WordPress и выполнили ряд ключевых действий:

  • Загрузили Docker и Docker Compose (для управления контейнерами).
  • Предварительно подготовили файл конфигурации Nginx, передающий пользовательские запросы в контейнер WordPress через FastCGI-протокол.
  • Опционально загрузили phpMyAdmin для удобного управления базой данных через пользовательский интерфейс.
  • Составили файл с описанием служб, после чего docker-compose автоматически скачал необходимые образы и запустил требуемые для корректной работы контейнеры. При этом в качестве веб-сервера использовался Nginx, а для хранения данных мы применили базу данных MySQL.
  • Завершили установку WordPress через админ-панель в браузере.

Эту базовую конфигурацию можно расширять или изменять различными способами. В качестве дополнения может выступить phpMyAdmin или совершенно другой веб-сервер на базе Apache или Node — в этом случае поступающие запросы будут передавать в WordPress через FastCGI-интерфейс.

На официальном сайте WordPress есть полноценная документация, описывающая нюансы работы с панелью администратора данной CMS. То же самое касается Nginx, на официальном сайте которого можно найти различные руководства по конфигурированию и использованию этого веб-сервера.

9810
13 минут чтения
Средний рейтинг статьи: 2.6

Читайте также

Хотите внести свой вклад?
Участвуйте в нашей контент-программе за
вознаграждение или запросите нужную вам инструкцию
img-server