Бывают ситуации, когда по каким-то причинам нет возможности зайти на сайт Друпал для проведения нужных действий. Или же просто не хочется тратить трафик, если вы используйте мобильное соединение с интернетом. Решение этой проблемы очень простоте и носит оно название drush aka "Drupal Shell".
До написания этой статьи я слышал довольно много о этой утилите, но практических обзоров так и не нашел.
Итак, почему же стоит использовать 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
!>The following modules will be enabled: forum
Do you really want to continue? (y/n): y
Forum was enabled successfully.
Анологичное действие служит для отключения модуля.
!>The following modules will be disabled: forum
Do you really want to continue? (y/n): y
Forum was disabled successfully.
Кроме того, программа позволяет нам установить дополнительные модули, что называется, "не отходя от кассы"
Для этого служит команда # ./drush dl Посмотрим пример.
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. Если есть вопросы - прошу
Комментарии
Рассказывал про drush на киевском кэмпе, к сожалению видео этого доклада ещё не готово. И расскажу может в блиц-докладе на кэмпе 3 декабря - утилита полезная и определённо надо о ней почаще рассказывать.
Ну в корневой каталог друпала это не очень удобно, проще иметь его где-нибудь в /home/username/drush (в винде не знаю как там надо делать) и сделать симлинк (как и написано в документации) чтобы можно было управлять многими сайтам сразу и друш обновлять проще, а не для каждой установки, так как друш от друпала никак не зависит. Особенно удобно когда стоит много друпалов в одном месте
Сопутствующие модули:
http://drupal.org/taxonomy/term/4654
Также стоит обратить внимание на README.PLEASE
http://drupalcode.org/viewvc/drupal/contributions/modules/drush/README.t...
Если у меня получится приехать на московский 2х дневный кэмп, могу подготовить докладик.
Я не планировал в этом обзоре касаться подробностей. Чуть позже дополню и рассмотрю нюансы при мультисайтинговой инсталяции.
Да, drush очень удобен.
Добавлю, что после установки, при запуске скрипта могут вылазить ошибки "open_basedir restriction in effect.". Лечится либо обнулением open_basedir в php.ini, либо установкой всех необходимых значений. Пользователи ArchLinux могут установить drush из AUR.
drush может полноценно выполнять последовательность действий из update.php?
насколько это безглючно, если может?
Да я уже пометил как устаревший. Ждем обновления.
Без проблем. Он все процедуры выполняет.
Пожалуйста, расскажите как работать через drush на windows.
Я чайник в консольных делах, после прочтения английских мануалов, получилось даже запустить, но!
Неудобно, пока что, например:
я набраю в командной строке windows - cmd:
drush y:\home\my_drupal_prj\www st
и получаю статус.
Можно как-то проще?
Если вам не нравится консоль, лучше не используйте. Если вам надо или нравится читаем маны и доки.
вопрос в том как сократить строку, например:
- как установить базовую директорию сайта?
- может установить консоль unix и её использовать, но опять же какую консоль и как?
- как пользоваться модулями? здесь вопрос подробнее http://www.drupal.ru/node/40261
идея-то drush'а проста и приятна на слух, но как настроить..
ждать перезагрузки страницы модулей не нравиться ещё больше.
По Windows, к сожалению, ничего сказать не могу. Я с ним не работаю вообще. Думаю, можно попробовать использовать такие средства, как,например, cygwin.
Master of Tragedy
Спасибо, пока я понял что drush мне не нужен (кому интересно см. ссылку из предыдущего комментария).
Подскажите, пожалуйста, а где можно настроить путь к директории бэкапа, которую создает Drush ?
По умолчанию (после установки из портов FreeBSD) такая директория размещается в /root/drush-backups, что не очень удобно
аналогичная проблема... подскажите, плиз...
ну подскажите плиз -
очень надо... сайт хостится у хостера (масло масляное), и он не дает прав на то, чтобы создавать папки в своей директории... вот поэтому и хочу изменить путь директории бэкапа
Ну что за овощи?
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.
поясни, плиз... ни икса не понимаю... (ну нет у меня большого опыта работы с консолью, а научиться хочется)... что нужно сделать-то?
это опция команды drush, которая задает backup-dir, применяется типа таким образом:
drush[пробел]--backup-dir=[абсолютный путь к директории][пробел][прочие опции]
как мне кажется...
для тех, которые нубы такие же как и я:
короче, сделал в лоб (ну наверно это неправильно)
/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/
это в случае если хостер опять же не разрешает создавать папки в корневой директории пользователя... возможно что-то сделал не так, или сделал лишнее - поправьте... всегда рад конструктивным замечаниям