WordPress одной кнопкой - установка и настройка.

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

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

Обычная установка WordPress проходит у меня в несколько этапов.

  • Создание базы данных.
  • Создание каталогов сайта.
  • Собственно установка wordpress.
  • Небольшая начальная настройка (формат ссылок, пользователи, плагины и т.д.)
  • Добавление нового сайта в logrotate для ротации лог-файлов.

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

Я не претендую на оригинальность, так как подобные скрипты существуют давно. При желании их можно найти на Github или в гугле. Но поскольку все они рассчитаны под нужды написавшего их админа, то приходится искать или максимально подходящий, или переписывать под себя.

В данной статье я подробно опишу создание скрипта и его работу. Для примера я буду использовать виртуальную машину (Ubuntu Server 16.04, PHP 7, Nginx, MariaDB, WP-CLI) выступающую в роли локального сервера. Готовый скрипт можно будет скачать в конце статьи.

База данных для wordpress

Начать стоит с создания базы данных для нового сайта. Обычно я захожу в консоль MariaDB и выполняю определенную последовательность команд.

Как видите ничего сложного нет. Копируй, да вставляй, но если так делать много раз подряд, то надоедает.

В виде скрипта приведенные выше команды будут выглядеть примерно так.

Скрипт удобен тем, что он использует так называемые переменные, обозначенные в начале скрипта. Во время работы значения переменных подставляются в тех частях, где эти переменные указаны со знаком $.

Значения переменных можно изменять, кроме переменной DBDIR, ее изменять не нужно. В значении переменной DBDIR указан каталог /var/lib/mysql/, именно в этом каталоге MariaDB создает и хранит базы данных.

DBDIR нужна только для того, чтобы проверить наличие создаваемой базы данных в каталоге /var/lib/mysql/. Если база с таким именем уже существует, скрипт завершит работу и предложит выбрать другое имя для базы данных.

Условие проверки существования базы данных.

Еще одно условие проверяет наличие ошибок могущих возникнуть при создании базы данных. Если ошибка выявлена (не создалась база и т.д.), то скрипт завершит работу.

Условие для проверки ошибок при создании базы.

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

Иногда в создании нового пользователя нет необходимости и привилегии на новую базу назначаются уже существующему пользователю, для этого его имя и пароль нужно указать в значении переменных DBUSER и DBPASS, соответственно.

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

Обратите внимание на вход в консоль MariaDB. После ключа "-p" будет подставлено значение переменной ROOTPASS (пароль root-пользователя mysql).

Каталоги сайта

Новый сайт будет располагаться в каталоге /var/www/localsite/public. Отдельно еще создаю каталог для лог-файлов /var/www/localsite/logs.

Обычно это делается двумя командами.

В виде скрипта это выглядит так.

Также задаем значения переменных SITEDIR и LOGDIR и подставляем переменные в команды создания каталогов mkdir.

Установка WordPress с помощью WP-CLI

Для установки WordPress я буду использовать WP-CLI - PHP приложение позволяющее устанавливать и настраивать WordPress через командную строку посредством ввода определенных команд.

WP-CLI устанавливается быстро и легко, не вызывая никаких проблем. Единственное требование для работы приложения - это наличие любой установленной версии PHP.

Сначала скачиваем файл wp-cli.phar.

Проверяем что приложение работает видит установленный PHP.

Если все в порядке, то должно быть нечто похожее (версия PHP, бинарный файл и т.д.)

Делаем файл wp-cli.phar исполняемым.

Перемещаем файл wp-cli.phar в каталог /usr/bin/ попутно переименовав его в wp.

Теперь команду wp можно выполнять из любого каталога. Если выполнить просто выполнить команду wp от имени пользователя root, то возникнет вот такая ошибка.

Ошибка сообщает что запуск от имени root небезопасен и советует запускать wp-cli от обычного пользователя используя sudo, но если вы все же желаете работать от имени root пользователя, то в таком случае к команде нужно добавлять флаг --allow-root.

Теперь предыдущая команда (php wp-cli.phar --info) будет выглядеть так.

Перейдем в созданный ранее каталог /var/www/localsite/public.

Скачиваем русскую версию WordPress (если не дописать локаль --locale=ru_RU, то по дефолту будет скачан английский архив).

Следующим шагом будет создание файла wp-config.php. Во время обычной установки WordPress это выглядит так.

wp-cli wordpress install установка

С помощью WP-CLI файл wp-config.php создается следующей командой (то же что и на картинке выше, разве что добавлена русская локаль).

Далее происходит установка WordPress.

wp-cli wordpress install установкаС помощью WP-CLI установка выполняется следующей командой.

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

В каждом новом сайте на WordPress есть ненужные записи, страницы, комментарии и плагины, которые я удаляю сразу после установки.

Запись "Привет, мир!" - чтобы ее удалить выполняем следующую команду.

Страницы "Пример страницы" и "Политика конфиденциальности" удаляются так.

Удаляю дефолтные плагины "Akismet Anti-Spam" и "Hello Dolly".

Сразу устанавливаю вид постоянных ссылок на "Название записи".

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

Logrotate и все остальное

Назначаем права на каталоги сайта и перезагружаем сервер.

Осталось добавить сайт в ротацию лог-файлов утилиты logrotate. Обычно я создаю файл sites в каталоге /etc/logrotate.d и добавляю в него такое содержимое.

После чего запускаю сайт в ротацию.

В связи с особенностями обработки скриптом специальных символов и переменных, я применил два вида кавычек (двойные и одиночные), поэтому конструкция разбита на две части.

Как использовать скрипт

Готовый скрипт.

Скачиваем скрипт с моего сайта.

Распаковываем архив и удаляем его.

Делаем скрипт исполняемым.

Перемещаем скрипт в каталог /usr/bin попутно переименовывая его в newsite.

Открываем скрипт любым текстовым редактором (например nano) и изменяем значения переменных под свои нужды.

Сохраняем изменения в файле и запускаем скрипт. Работу скрипта можно вызывать командой newsite.

На этом наверное все.

При написании статьи использовалась следующая литература.

Advanced Bash-Scripting Guidehttp://rus-linux.net/MyLDP/BOOKS/abs-guide/flat/abs-book.html

WP-CLI Commandshttps://developer.wordpress.org/cli/commands/