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

Главные вкладки

Аватар пользователя Master of Tragedy Master of Tragedy 23 ноября 2009 в 8: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, название хоста, на котором расположена наша установка Друпал, а также тип драйвера базы данных и имя пользователя. То есть одной командой мы можем получить практически исчерпывающую информацию о параметрах нашего сайта. Smile

Установка, включение, отлючение и деинсталяция дополнительных модулей 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.

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

Для этого служит команда # ./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. Осталось лишь его включить, используя команду выше Smile

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

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

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

Комментарии

Аватар пользователя axel axel 23 ноября 2009 в 13:12

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

Аватар пользователя cyberpunk cyberpunk 23 ноября 2009 в 13:32

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

Аватар пользователя Master of Tragedy Master of Tragedy 23 ноября 2009 в 14:04

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

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

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

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

Аватар пользователя vgoodvin vgoodvin 23 ноября 2009 в 16:50

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

Аватар пользователя v1adimir v1adimir 23 ноября 2009 в 17:46

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

Аватар пользователя Master of Tragedy Master of Tragedy 24 ноября 2009 в 10:00

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

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

Аватар пользователя graceman9 graceman9 11 февраля 2010 в 15:42

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

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

drush y:\home\my_drupal_prj\www st

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

Аватар пользователя vgoodvin vgoodvin 11 февраля 2010 в 15:58

"graceman9" wrote:

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

Аватар пользователя graceman9 graceman9 11 февраля 2010 в 16:55

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

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

Аватар пользователя Master of Tragedy Master of Tragedy 11 февраля 2010 в 17:57

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

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

Аватар пользователя graceman9 graceman9 23 февраля 2010 в 20:18

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

Аватар пользователя Demeter Demeter 18 июля 2011 в 20:19

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

Аватар пользователя DennisVV DennisVV 2 ноября 2011 в 9:50

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

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

Аватар пользователя DennisVV DennisVV 2 ноября 2011 в 17:47

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

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

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

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 2 ноября 2011 в 17:52

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

 --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.
Аватар пользователя DennisVV DennisVV 2 ноября 2011 в 19:32

"RxB" wrote:
--backup-dir

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

Аватар пользователя v1adimir@drupal.org v1adimir@drupal.org 2 ноября 2011 в 19:38

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

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

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

Аватар пользователя DennisVV DennisVV 2 ноября 2011 в 20:20

для тех, которые нубы такие же как и я:
короче, сделал в лоб (ну наверно это неправильно)
/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/
это в случае если хостер опять же не разрешает создавать папки в корневой директории пользователя... возможно что-то сделал не так, или сделал лишнее - поправьте... всегда рад конструктивным замечаниям