Categories: Шпаргалки

Развертывание WordPress в Docker и установка его в командной строке

Используемые термины: CMS , WordPress , Docker , Linux , MariaDB .

В данной инструкции мы рассмотрим процесс работы с WordPress из командной строки. Эти навыки будут полезны для автоматизации каких-либо процессов, связанных с данной CMS. Наша работа будет выполняться в системе семейства Linux. Сервисы мы будем поднимать внутри контейнеров.

Подразумевается, что на нашем компьютере уже установлен Docker с docker-composer. В противном случае, читаем инструкцию Установка Docker на Linux .

Поднимаем WordPress в Docker

На момент написания инструкции, в samples docker docs можно было найти пример композера для развертывания контейнеров mysql и wordpress. Его мы возьмем за основу, но поменяем некоторые параметры, и кое-что добавим.

Предположим, что наш проект будет хранится относительно каталога /opt/wordpress. Создадим его:

mkdir /opt/wordpress

После создадим композер-файл:

vi /opt/wordpress/docker-compose.yml

version: «3.9»

services:
db:
image: mariadb:latest
hostname: wp_database
container_name: wp_database
volumes:
— db_data:/var/lib/mysql
restart: always
environment:
TZ: «Europe/Moscow»
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: ${DB_NAME}
MYSQL_USER: ${DB_USER}
MYSQL_PASSWORD: ${DB_PASSWORD}

wordpress:
depends_on:
— db
image: wordpress:latest
hostname: wp_app
container_name: wp_app
volumes:
— wordpress_data:/var/www/html
ports:
— «8000:80»
restart: always
user: www-data
environment:
TZ: «Europe/Moscow»
WORDPRESS_DB_HOST: ${DB_HOST}
WORDPRESS_DB_USER: ${DB_USER}
WORDPRESS_DB_PASSWORD: ${DB_PASSWORD}
WORDPRESS_DB_NAME: ${DB_NAME}

cli:
depends_on:
— db
— wordpress
image: wordpress:cli
hostname: wp_cli
container_name: wp_cli
volumes:
— wordpress_data:/var/www/html
restart: «no»
user: www-data
environment:
TZ: «Europe/Moscow»
WORDPRESS_DB_HOST: ${DB_HOST}
WORDPRESS_DB_USER: ${DB_USER}
WORDPRESS_DB_PASSWORD: ${DB_PASSWORD}
WORDPRESS_DB_NAME: ${DB_NAME}

volumes:
db_data: {}
wordpress_data: {}

* в файле мы описали 3 контейнера, 2 из которых будут запускаться и работать постоянно — для wordpress и СУБД, а cli мы будем запускать по необходимости. Обратите внимание, что в качестве значений для настройки подключения к базе данных мы указали переменные — их мы зададим через .env файл.
** рассмотрим некоторые параметры:

  • image — образ, из которого будет разворачиваться контейнер.
  • hostname — задаем имя хоста. По именам контейнеры одного композера могут обращаться друг к другу.
  • container_name — задаем имя, которое будет задано контейнеру после его запуска.
  • volumes — прокидывает в контейнер директорию сервера. Таким образом, важные данные не будут являться частью контейнера и не будут удалены после его остановки.
  • restart — режим перезапуска. В нашем случае всегда (always) — после перезагрузки сервера, наши контейнеры запустятся.
  • environment — задает системные переменные. В данном примере, временную зону и пароли. Некоторые системные переменные имеют свои особенности для конкретного контейнера, например, WORDPRESS_DB_HOST задает в настройках WordPress базу данных для хранения информации.
  • depends_on — указываем, какие контейнеры должны быть запущены, чтобы мог запуститься текущий контейнер.
  • ports — при необходимости, указываем порт, который будет наш сервер пробрасывать запрос внутрь контейнера.

Создаем файл .env, в котором перечислим переменные, необходимые для композера:

vi /opt/wordpress/.env

DB_HOST = db
DB_USER = wordpress
DB_PASSWORD = wordpress
DB_NAME = wordpress

* в данном примере мы оставили значения из примера официальной документации. В рабочей среде стоит задать более стойкий пароль ( DB_PASSWORD ). DB_HOST должен соответствовать имени сервиса с контейнером СУБД.

Переходим в каталог с композер-файлом и запускаем проект:

cd /opt/wordpress

docker-compose up -d

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


Creating wp_database … done
Creating wp_cli … done
Creating wp_app … done

Убедимся, что наши контейнеры запущены:

docker ps | grep wp_

Мы должны увидеть 2 контейнера — wp_app и wp_database .

И так, мы подняли на внешнем порту 8000 веб-приложение с установленным CMS WordPress и СУБД MariaDB, которая принимает запросы по внутреннему порту 3306. Попробуем перейти на страницу <IP-адрес сервера>:8000 — должна открыться страница установки WordPress.

Если мы обращаемся к серверу по сети, и на нем используется брандмауэр, то необходимо будет открыть порт 8000. В зависимости от утилиты управления фаерволом, наши команды будут отличаться.

а) IPTABLES (как правило, на системах deb):

iptables -A INPUT -p tcp —dport 8000 -j ACCEPT

б) Firewalld (как правило, на системах rpm):

firewall-cmd —permanent —add-port=8000/tcp

firewall-cmd —reload

Но мы не будем выполнять установку через веб-интерфейс. Воспользуемся командной строкой.

Устанавливаем WordPress через командную строку

Для завершения установки нам нужно выбрать предпочитаемый язык и прописать настройки для доступа к базе данных. После будут созданы необходимые таблицы в базе данных. Чаще всего, это делают в веб-интерфейсе, но мы рассмотрим вариант работы с wp-cli.

Завершаем установку системы управления следующей командой:

docker-compose run —rm cli wp core install —url=remontka.local:8000 —title=»remontka Local Blog» —admin_name=admin —admin_email=admin@remontka.local —skip-email —admin_password=password

* в данном примере мы запустили наш контейнер с wp-cli и дали команду на установку CMS со следующими опциями:

  • url — адрес сайта. В примере по умолчанию, контейнер стартует на 8000 порту, поэтому мы указываем его. В вашем случае порт может быть другой или доступ может осуществляться через entry point.
  • title — заголовок для сайта. Можно указать произвольный текст.
  • admin_name — имя администратора для входа в систему управления.
  • admin_email — адрес электронной почты администратора.
  • skip-email — не отправлять приветственное письмо на адрес администратора.
  • admin_password — пароль для доступа к панели управления.

Установим русский язык:

docker-compose run —rm cli wp language core install ru_RU

И активируем его:

docker-compose run —rm cli wp language core activate ru_RU

Система развернута. Попробуем перейти на страницу <IP-адрес сервера>:8000 — должна открыться страница сайта.

Работа с плагинами

Рассмотрим примеры работы с плагинами из командной строки при помощи WP-CLI.

Установить плагин:

docker-compose run —rm cli wp plugin install «Classic Editor»

Активировать плагин:

docker-compose run —rm cli wp plugin activate «classic-editor»

* обратите внимание на другое название при обращении к плагину.

Деактивация:

docker-compose run —rm cli wp plugin deactivate «classic-editor»

Удаление:

docker-compose run —rm cli wp plugin delete «classic-editor»

Полный список команд можно посмотреть на официальном сайте .

Пример команд

Отдельно приведем некоторые дополнительные команды, которые могут быть полезны в процессе работы.

Работа с docker-compose

Остановка всех сервисов из композер-файла:

docker-compose down

Остановка всех сервисов из композер-файла с удалением данных:

docker-compose down —volumes

Работа с WP-CLI

Мы будем писать только команду для утилиты wp без запуска ее через докер.

Изменить страницу сайта:

wp option set siteurl https://remontka.com:8000

Изменить домашнюю страницу сайта:

wp option set home https://remontka.com:8000

admin

Recent Posts

Что такое Zulip

Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…

2 месяца ago

Что такое Zookeeper

Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…

2 месяца ago

Что такое Zimbra

Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…

2 месяца ago

Что такое Zabbix

Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…

2 месяца ago

Что такое YouTube

YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…

2 месяца ago

Что такое yota

Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…

2 месяца ago