Drupal мультисайт и команды Drush

drush logo

Название Drush происходит от сочетания Drupal + Shell и предназнаен он для администрирования сайта на drupal через командную строчку (shell). Я слышал о нем очень давно, но смог оценить его возможности лишь, когда начал управлять мультисайт установкой друпала. Некоторые возможности Drush:

  • скачивание и установка модулей
  • скачивание и обновление переводов
  • очистка кэша
  • выполнение php-скрипта
  • управление пользователями

При этом модули имеют возможность определять свои команды, тем самым расширяя drush.

Особенно полезно использовать drush для массовых операций в мультисайт установке друпала. Пишем  shell скрипт для многократного запуска drush команды. Например, очистка кэша:

#!/bin/bash
db_names=( "site1" "site2" )

for db_name in ${db_names[*]}
do
    s1="drush -l "
    s2=".ru cache-clear all"
    s_cmd=$s1$db_name$s2
    echo "$s_cmd"
    eval $s_cmd
done

exit 0

При выполнении drush-команды в мультисайт установке необходимо указывать параметр -l, передавая таким образом алиас сайта в мультисайт установке, иначе команда выполнится для default. Данный скрипт очищает все кэши в перечисленных сайтах.

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

#!/bin/bash
db_names=( "site1" "site2" )
# Execute RSS creation script for all regional sites
for db_name in ${db_names[*]}
do
    s1="drush -l "
    s2=".ru php-script rss_create.drush"
    s_cmd=$s1$db_name$s2
    echo "$s_cmd"
    eval $s_cmd
done
exit 0

В данном случае выполнялся скрипт rss_create.drush. Вот его содержимое:

$node = new stdClass();
$node->title = "Заголовок RSS";
$node->body = "";
$node->type= "news_rss"; // тип ноды
$node->created = time();
$node->changed = $node->created;
$node->status = 1;
$node->promote = 0;
$node->sticky = 0;
$node->format = 1;
$node->uid = 1;

$node->feeds['FeedsHTTPFetcher']['source'] = 'http://адрес_ленты';

node_save( $node );

Как мы видим это обычный друпал-скрипт.

Кроме этих примеров есть один из самых распространенных вариантов применения drush - обновление ядра и модулей сайтов. Конечно лучше сначала проверить накатываемое обновление на локальной копии сайта.

Даже, если у вас не мультисайт установка, вы все равно сможете выполнять операции массово. Нужно просто написать скрипт переходящий по папкам (корневым папкам сайтов) и выполняющий drush-команду без указания алиаса. Например массово заменить засветившийся административный пароль:)

Удачи!

вернуться назад