Drush. Простое средство управления сайтом из командной строки.

Пнд, 23/11/2009 - 05:46

Бывают ситуации, когда по каким-то причинам нет возможности зайти на сайт Друпал для проведения нужных действий. Или же просто не хочется тратить трафик, если вы используйте мобильное соединение с интернетом. Решение этой проблемы очень простоте и носит оно название  drush aka "Drupal Shell".

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

Итак, почему же стоит использовать Drush:

  • Удобная утилита позволяет практически полностью управлять сайтом
  • Не потребляет трафика
  • Экономия времени

Рассмотрим некоторые возможности данного инструмента.

В интерактивном режиме можно посмотреть статус системы и ее версию. Для этого я использовал команду # ./drush st Посмотрим, что у нас получилось.

master@master-laptop:~/public_html/corp/drush$ ./drush st
  PHP configuration : /opt/lampp/etc/php.ini
  Drupal Root       : /home/master/public_html/corp
  Drupal version    : 6.14
  Site Path         : sites/default
  Site URI          : http://default
  Database Driver   : mysqli
  Database Hostname : localhost
  Database Username : root
  Database Name     : corp
  Database Password :
  Database          : Connected
  Drupal Bootstrap  : Successful
  Drupal User       : Anonymous

Как видно утилита прочла данные не только о версии друпал, но и расположение конфигурационного файла PHP, корневого каталога Drupal, название хоста, на котором расположена наша установка Друпал, а также тип драйвера базы данных и имя пользователя. То есть одной командой мы можем получить практически исчерпывающую информацию о параметрах нашего сайта. :)

Установка, включение, отлючение и деинсталяция дополнительных модулей Drupal.

Для установки дополнительных модулей мы воспользуемся командой ./drush en

master@master-laptop:~/public_html/corp/drush$ ./drush en forum
!>The following modules will be enabled: forum
Do you really want to continue? (y/n): y
Forum was enabled successfully.

Анологичное действие служит для отключения модуля.

master@master-laptop:~/public_html/corp/drush$ ./drush dis forum
!>The following modules will be disabled: forum
Do you really want to continue? (y/n): y
Forum was disabled successfully.

Кроме того, программа позволяет нам установить дополнительные модули, что называется, "не отходя от кассы" :)

Для этого служит команда # ./drush dl Посмотрим пример.

master@master-laptop:~/public_html/corp/drush$ ./drush dl cck
Project cck (6.x-2.6) downloaded to                                  [success]
/home/master/public_html/corp/sites/all/modules/.

Как видим, программа успешно загрузила нужный нам модуль с drupal.org. Осталось лишь его включить, используя команду выше :)

Представляете какая экономия времени! Для интересам можно даже посчитать, сколько в среднем мы тратим на загрузку и распаковку нужного нам модуля. Разница будет очевидна.

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

Ниже я рассмотрю процедуру установки Drush. Как выяснилось, это очень просто.
Первое, что мы делаем, это скачиваем сам  Drush. Затем помещаем распакованную утилиту в корневой каталог нашей установки Друпал. Готово! Теперь с помощью консоли мы можем войти в каталог Drush и начать использование. :) Инструкции по установке в Windows смотрите в файле Readme. Если есть вопросы - прошу :)

0 Спасибо

Комментарии

Аватар пользователя axel
7 лет 7 months назад axel #

Рассказывал про drush на киевском кэмпе, к сожалению видео этого доклада ещё не готово. И расскажу может в блиц-докладе на кэмпе 3 декабря - утилита полезная и определённо надо о ней почаще рассказывать.

0 Спасибо
Аватар пользователя cyberpunk
7 лет 7 months назад cyberpunk #

Ну в корневой каталог друпала это не очень удобно, проще иметь его где-нибудь в /home/username/drush (в винде не знаю как там надо делать) и сделать симлинк (как и написано в документации) чтобы можно было управлять многими сайтам сразу и друш обновлять проще, а не для каждой установки, так как друш от друпала никак не зависит. Особенно удобно когда стоит много друпалов в одном месте :)

0 Спасибо
Аватар пользователя Master of Tragedy
7 лет 7 months назад Master of Tragedy #
axel написал:
Рассказывал про drush на киевском кэмпе, к сожалению видео этого доклада ещё не готово. И расскажу может в блиц-докладе на кэмпе 3 декабря - утилита полезная и определённо надо о ней почаще рассказывать.

Если у меня получится приехать на московский 2х дневный кэмп, могу подготовить докладик.

cyberpunk написал:
Ну в корневой каталог друпала это не очень удобно, проще иметь его где-нибудь в /home/username/drush (в винде не знаю как там надо делать) и сделать симлинк (как и написано в документации) чтобы можно было управлять многими сайтам сразу и друш обновлять проще, а не для каждой установки, так как друш от друпала никак не зависит. Особенно удобно когда стоит много друпалов в одном месте :)

Я не планировал в этом обзоре касаться подробностей. Чуть позже дополню и рассмотрю нюансы при мультисайтинговой инсталяции.

0 Спасибо
Аватар пользователя mensh@drupal.org
7 лет 7 months назад mensh@drupal.org #

Да, drush очень удобен.

0 Спасибо
Аватар пользователя vgoodvin
7 лет 7 months назад vgoodvin #

Добавлю, что после установки, при запуске скрипта могут вылазить ошибки "open_basedir restriction in effect.". Лечится либо обнулением open_basedir в php.ini, либо установкой всех необходимых значений. Пользователи ArchLinux могут установить drush из AUR.

0 Спасибо
Аватар пользователя v1adimir
7 лет 7 months назад v1adimir #

drush может полноценно выполнять последовательность действий из update.php?
насколько это безглючно, если может?

0 Спасибо
Аватар пользователя vgoodvin
7 лет 7 months назад vgoodvin #

Да я уже пометил как устаревший. Ждем обновления.

0 Спасибо
Аватар пользователя Master of Tragedy
7 лет 7 months назад Master of Tragedy #
v1adimir написал:
drush может полноценно выполнять последовательность действий из update.php?
насколько это безглючно, если может?

Без проблем. Он все процедуры выполняет.

0 Спасибо
Аватар пользователя graceman9
7 лет 4 months назад graceman9 #

Пожалуйста, расскажите как работать через drush на windows.

Я чайник в консольных делах, после прочтения английских мануалов, получилось даже запустить, но!
Неудобно, пока что, например:
я набраю в командной строке windows - cmd:

drush y:\home\my_drupal_prj\www st

и получаю статус.
Можно как-то проще?

0 Спасибо
Аватар пользователя vgoodvin
7 лет 4 months назад vgoodvin #
graceman9 написал:

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

0 Спасибо
Аватар пользователя graceman9
7 лет 4 months назад graceman9 #

вопрос в том как сократить строку, например:
- как установить базовую директорию сайта?
- может установить консоль unix и её использовать, но опять же какую консоль и как?
- как пользоваться модулями? здесь вопрос подробнее http://www.drupal.ru/node/40261
идея-то drush'а проста и приятна на слух, но как настроить..

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

0 Спасибо
Аватар пользователя Master of Tragedy
7 лет 4 months назад Master of Tragedy #
graceman9 написал:
Пожалуйста, расскажите как работать через drush на windows.

По Windows, к сожалению, ничего сказать не могу. Я с ним не работаю вообще. Думаю, можно попробовать использовать такие средства, как,например, cygwin.

0 Спасибо
Аватар пользователя graceman9
7 лет 4 months назад graceman9 #

Master of Tragedy
Спасибо, пока я понял что drush мне не нужен (кому интересно см. ссылку из предыдущего комментария).

0 Спасибо
Аватар пользователя Demeter
5 лет 11 months назад Demeter #

Подскажите, пожалуйста, а где можно настроить путь к директории бэкапа, которую создает Drush ?
По умолчанию (после установки из портов FreeBSD) такая директория размещается в /root/drush-backups, что не очень удобно

0 Спасибо
Аватар пользователя DennisVV
5 лет 7 months назад DennisVV #
Demeter написал:
где можно настроить путь к директории бэкапа, которую создает Drush ?

аналогичная проблема... подскажите, плиз...

0 Спасибо
Аватар пользователя DennisVV
5 лет 7 months назад DennisVV #

ну подскажите плиз -

Demeter написал:
где можно настроить путь к директории бэкапа, которую создает Drush ?

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

0 Спасибо
Аватар пользователя Виктор Степаньков ака RxB
5 лет 7 months назад Виктор Степаньк... #

Ну что за овощи?

 --backup-dir                            Specify a directory to backup        
                                           projects into. Defaults to          
                                           drush-backups within the home        
                                           directory of the user running the    
                                           command. It is forbidden to specify  
                                           a directory inside your drupal root.
0 Спасибо
Аватар пользователя DennisVV
5 лет 7 months назад DennisVV #
RxB написал:
--backup-dir

поясни, плиз... ни икса не понимаю... (ну нет у меня большого опыта работы с консолью, а научиться хочется)... что нужно сделать-то?

0 Спасибо
Аватар пользователя v1adimir@drupal.org
5 лет 7 months назад v1adimir@drupal.org #

это опция команды drush, которая задает backup-dir, применяется типа таким образом:

drush[пробел]--backup-dir=[абсолютный путь к директории][пробел][прочие опции]

как мне кажется...

0 Спасибо
Аватар пользователя DennisVV
5 лет 7 months назад DennisVV #

для тех, которые нубы такие же как и я:
короче, сделал в лоб (ну наверно это неправильно)
/path/to/drush/includes/drush.inc
строка 1697
$backup_dir = drush_get_option('backup-dir', drush_server_home() . '/mysite.ru/drush-bcp/' . '.drush-backups');
папку drush-bcp перед этим, естественно, создал на серваке...
да, и воспользуйтесь командой ./drush --root=/home/uXXXXXX/mysite.ru/bcp/
это в случае если хостер опять же не разрешает создавать папки в корневой директории пользователя... возможно что-то сделал не так, или сделал лишнее - поправьте... всегда рад конструктивным замечаниям

0 Спасибо