В этой статье мы рассматривали установку утилиты drush, настало время рассмотреть эту утилиту более подробно
Drupal sh или Drupal shell – именно так расшифровывается аббревиатура drush, которая является названием утилиты с интерфейсом командной строки. Эта утилита широко используется профессиональными веб-разработчиками Drupal для управления проектами и ходом разработки Drupal. Не менее полезна она и для администраторов, поскольку её возможности позволяют автоматизировать выполнение самих административных задач, касающихся проектов на CMS Drupal. Например, таким образом администраторы хостинг-площадок реализуют установку веб-приложений Drupal в «один клик», что очень удобно для пользователей — клиентов хостингов.
Как появилась drush?
CMS Drupal очень сложная система, которая не предоставляет разработчику никаких удобств, но вместе с тем дарит безграничные возможности при создании любых веб-приложений любой сложности и направленности. По определению такая мощная и универсальная система не может быть удобной.
Работа с CMS Drupal – это рутинное выполнение действий, за которые отвечает исключительно сам разработчик. Drupal ничего не скрывает от пользователя/разработчика, а потому предоставляет ему естественную и логически правильно выстроенную схему работы API, в которой нет отсутствующих или «непонятных» компонентов. Это всё даёт полный контроль над процессом разработки и обслуживания проектов на Drupal, однако всегда сопровождается большим количеством рутинных действий. Ярким примером является обновление Drupal. Для этого необходимо перевести проект в режим обслуживания, загрузить пакет обновления, выполнить резервное копирование, удалить старые файлы CMS, перенести конфигурацию и … т. д. Со временем стали появляться скрипты для отдельных и самых рутинных задач (таких как обновление), а позже всё это объединилось в единую реализацию утилиты drush, которая через командную консоль может выполнить самую сложную задачу (обновление, установка) буквально одной командой. Вот как выглядит команда drush обновления ядра Drupal:
$ drush up drupal
В процессе выполнения этой команды нужно только подтвердить обновление и пронаблюдать за ходом работы команды. Для того, чтобы вручную обновить Drupal, может потребоваться (если всё делать очень быстро) 10 минут и более. Утилита drush сделает то же самое за 15 секунд.
Как работает drush?
Утилита drush – это набор сценариев, написанных на PHP, интерфейс к которым предоставляется через объединяющий файл-сценарий drush. Утилита запускает команды, для которых в свою очередь предусмотрены опции. Например рассмотренная выше команда up drupal, является ничем иным как собственно, командой up (update – обновить) с опцией drupal, указывающей, что следует произвести обновление проекта под именем drupal – т. е. ядра CMS Drupal. В качестве проектов также указываются имена модулей, тем оформления, локализаций и т. д.
В большинстве случаев утилиту drush приходится устанавливать в систему вручную. Однако в некоторых дистрибутивах Linux она доступна в виде готовых пакетов.
Для того, чтобы иметь возможность управлять проектом Drupal с помощью утилиты drush, необходимо либо запускать её в каталоге с проектом (предварительно перейдя в него), либо указывать этот каталог с помощью дополнительной опции.
Основные команды и опции drush
Синтаксис утилиты drush классический и выглядит следующим образом:
drush команда [опции]
Список основных и часто используемых команд drush:
Команда | Назначение |
cc, cache-clear | Очистка кеша Drupal. |
st, core-status | Выводит основную информацию о состоянии ядра Drupal, а также параметрах его проекта. |
updb, updatedb | Выполняет обновление БД Drupal, аналогично запуску скрипта update.php. |
dd, drupal-directory | Возвращает абсолютный путь к проекту Drupal. |
en, pm-enable | Выполняет включение проекта (модуля или темы). |
dis, pm-disable | Отключает проект. |
pm-info | Выводит информацию для одного или нескольких проектов (модулей или тем). |
pm-uninstall | Удаляет указанные проекты. |
pm-list | Выводит список всех проектов, доступных Drupal. |
vset | Устанавливает значение переменных Drupal. |
ws | Выводит сообщения системного журнала Drupal. |
ard, archive-dump | Создаёт полный бекап сайта Drupal, включая БД. |
up, pm-update | Выполняет обновление одного или нескольких проектов Drupal. |
dl, pm-download | Загружает указанные проекты сразу в специальный системный каталог Drupal. |
sql-conf | Выводит реквизиты подключения к БД Drupal. |
sql-connect | Выводит строку текущего активного подключения к БД. |
sql-dump | Выполняет бекап БД. |
sqlq, sql-query | Выполняет произвольный SQL-запрос к БД Drupal. |
sql-sync | Выполняет копирование БД при помощи Rsync. |
Глобальные опции drush позволяют применять команды более гибко. Далее приведены самые распространённые из них:
Опция | Описание |
-r, —root=PATH | Задаёт путь к сайту на Drupal. |
-y, —yes | Автоматически подтверждает выдаваемые drush запросы. |
-n, —no | Автоматически отклоняет выдаваемые drush запросы. |
-i, —include | Подключает дополнительные пути для поиска функций и/или команд drush. |
-v, —verbose | Включает подробный вывод. |
-u, —user | Позволяет выполнить авторизацию на сайте Drupal. |
—php | Задаёт произвольный путь к интерпретатору PHP. |
-s, —simulate | Имитирует выполняемые действия команд. |
Управление проектами и обслуживание Drupal
Как уже было отмечено, в качестве проектов Drupal выступают его модули, темы, а также само ядро. Всеми этими структурными компонентами легко управлять из командной строки. Так, например, загрузить и установить модуль views можно командой:
$ drush dl views
При этом drush загрузит модуль именно туда, где ему место — в каталог sites/all/modules
. Далее от пользователя требуется его только включить:
$ drush en views The following projects have unmet dependencies: views requires ctools Would you like to download them? (y/n): y
Многие модули в Drupal имеют зависимости в виде других модулей (или библиотек). При включении модуля с зависимостями drush их самостоятельно отследит и предложит загрузить.
Загрузка и установка темы оформления «Zero Point»:
$ drush dl zeropoint $ drush en zeropoint
Установка темы оформления «Zero Point» как темы по-умолчанию:
$ drush vset theme_default zeropoint
Перевод Drupal в режим обслуживания:
$ drush vset maintenance_mode 1
Соответственно для перевода в рабочий режим, следует задать значение «0». Для создания резервной копии базы данных Drupal:
$ drush sql-dump –-result-file=site_back.dump
Создание полной резервной копии сайта Drupal, включая и БД:
$ drush ard –-destination=/home/john/backups/site-drupal.tar
Восстановление из полной резервной копии в каталог /htdocs/drupal-site:
$ drush arr /home/john/backups/site-drupal.tar –-destination=~/htdocs/drupal-site
Запуск скрипта обновления БД:
$ drush updb
Обновление всех компонентов Drupal (ядро, модули, темы):
$ drush up
Обновить только модулей, не затрагивая ядро:
$ drush up –-no-core
Обновление только проектов, имеющих обновления безопасности:
$ drush up –-security-only
Просмотр записей системного журнала Drupal:
$ drush ws
Управление пользователями
Для создания пользователя необходимо выполнить команду user-create:
$ drush user-create username1 –-mail=”username1@mail.ru” --password=”notqwerty”
Назначение роли «moderators» пользователю username1:
$ drush user-add-role moderators username1
Смена пароля пользователя username1:
$ drush user-password username1 –-password=”password”
Удаление пользователя username1:
$ drush user-cancel username1
Заключение
В заключение важно заметить, что кроме глобальный опций drush существуют опции, характерный для отдельных команд. Для получения дополнительной информации о таких опциях следует выполнять команду вида drush help команда. Как можно видеть, утилита drush – незаменимый помощник если не обычному пользователю, то веб- разработчику и/или опытному системному администратору точно.