Slyweb
На разработку сайта! Скидки 50%!

Про Drush

jQuery и CSS

Набравшись опыту, расскажу, основываясь на собственных ошибках, как быстрее научиться работать с Drupal 7 платформой. При выборе Drupal 7 в качестве одной из основных CMS для разработок основывался на огромном количестве модулей и хорошей документации.

Итак, после установки Drupal 7 на локальный хост необходимо загрузить Drush или установить его через консоль. Командная строка Drush для Windows находится по адресу: http://www.drush.org/drush_windows_installer, Drush для Windows это простая командная строка чрез которую выполняются команды для работы c сайтом будь то очистка кэша, установка модулей их активация и т.д. Больше всего мне пригодились команда rsync, согласующая любое количество сайтов между собой - файлы и базы данных сайтов на Drupal.

Для того чтобы проверить правильность установки давайте перейдём в корневую директорию сайта Drupal 7, используя команду cd, например cd WebServers/home/test-mydrupal.ru/www/ и проверим правильность установки выполнив команду drush status. В итоге увидим примерно следующее: "Drupal version : 7.19...." и т.д.

Если вы увидели результат работы команды status, далее мы можем использовать любые команды Drush. Не исчерпывающий, перечень которых указан ниже:

Про Drush. Функции для работы с ядром!

cache-clear (cc) Очищает определенный кэш или весь кэш сайта
core-cli (cli) Открывает новую консоль, оптимизированную для использования Drush
соге-сгоп (сгоп) Запускает все хуки крона в активных модуляx определенного сайта
соге-rsync (rsync) Запускает Rsync для синхронизации дерева сайта на базе Druapl с другим сервером через SSH
соrе-status(status, st) Предоставляет общий вид текущей копии сайта если таковая присутствует
соrе-topic (topic) Считывает подробную документацию по указанной теме. Возвращает путь к указанной папке тосМе/
help Выводит справку для Drush. Дополнительные параметры можно узнать при помощи команды 'drush help'
Image-flush Удаляет все производные изображения в указанном стиле
php-eval, eval Запускает произвольный рhp код для Drupal 7
search-index Индексирует оставшиеся материалы
search-reindex Обновляет индекс для материалов
search-status Показывает неиндексированные пункты
self-update обновляет Drush
site-alias(sa) Выводит список всех псевдонимов для всех известных псевдонимов сайтов и всех локальных сайтов
site-install(si) Устанавливает Drupal 7 вместе с модулями/темами/конфигурацией, используя указанный профиль установки
test-clean(tc) Удаляет временные таблицы и файлы
updated (updb) Осуществляет все нужные обновления базы данных (аналогично запуску файла update.php)
site-alias(sa) Выводит список всех псевдонимов для всех известных псевдонимов сайтов и всех локальных сайтов
version Показывает версию Drush

Про Drush! Работа с перменными! Variables!

variable-delete Удаляет переменную
variable-get(vget) Получить значение переменной
variable-set(vset) Создает несколько переменных

Про Drush Работа с полями! Fields!

field-clone Дублирует поля и все их экземпляры
field-create Создает поля и экземпляры. Возвращает url адреса для редактирования полей
field-delete Удаляет поле и его экземпляры
field-info Выводит сведения о полях, их типах и виджетах

Про Drush Работа с пользователями! Users!

user-add-role(urol) Добавляет роль пользователю
user-block Блокирует указанного пользователя или пользователей
user-cancel Аннулирует учетную запись пользователе
user-unblock Снимает блокировку с пользователя
user-create Создает учетную запись пользователя
uinf например, - drush uinf 1 выводит сведения о пользователе с id 1
user-login Выводит ссылку для входа в пользователе учетную запись
user-password (upwd) Повторно задает пароль для пользователя с определённым именем
urrol Удаляет роль у пользователя

Про Drush Работа с модулями! Modules!

pm-disable (dis) Отключает один или несколько расширение (модулей или тем)
pm-download (dl) Загружает проекты с сайта drupal.org или других источников
pm-enable (en) Подключает одно или несколько расширений (модулей или тем)
pm-info(pmi) Выводит подробную информацию об одном или нескольких расширениях (модулях или темах)
pm-list (pl) Выводит список доступных расширений модулей или тем
pm-refresh (rf) Выводит свежую информацию статуса обновления
pm-releasenotes Выводит сопроводительные записи о версии проекта
pm-releases (rl) Выводит информацию о версии проекта
pm-unistall Удаляет один или несколько модулей
pm-update Обновляет выбранное расширение

Помимо указанного списка команд Drush имеет другие команды, например для работы с базой данных сайта на Drupal.

Но остановимся мы не на всех командах Drush, а на способе синхронизации локального и рабочего сервера для двух сайтов Drupal 7. Для этого нужно в директории Drush создать файл "myclient.aliases.drushrc.php" следующего содержания:

  • Код
  • Чистый код
  • Копировать в буфер
  1.<?php
  2.$aliases['local'] = array(
  3. 'uri' => 'myclient',
  4. 'root' => 'C:/WebServers/home/test-mydrupal.ru/www',
  5. 'path-aliases' => array(
  6.    '%files' => '',
  7. ),
  8.);
  9.$aliases['dev'] = array(
10. 'uri' => 'myclient.62.109.28.100/',
11. 'root' => '/var/www/joomla/data/www',
12. 'dump-dir' => '/home/kkedrovsky/drush-dump',
13. 'remote-host' => '62.109.28.100',
14. 'remote-user' => 'root',
15. 'path-aliases' => array(
16.    '%files' => '',
17. ),
18.);

        

RSYNC синхронизация!

В этом файле мы создали алиасы (псевдонимы) для двух сайтов "local" и "dev". После этого можно приступить к синхронизации, при этом файлы неизменённые с момента последнего копирования не будут повторно загружаться с удаленного сервера. Обязательными параметрами являются root и uri.

  • Код
  • Чистый код
  • Копировать в буфер
  1.drush rsync --no-owner --no-group @myclient.dev:%files @myclient.local:%files

        

--no-owner --no-group - необходимы для того чтобы не переопределять владельца пользователя при копировании файлов, смысл их указывать есть для Windows. В результате у вас должен появится следующей текст:


You will destroy data from /cygdrive/C/WebServers/home/test-mydrupal.ru/www and replace with data fr
om root@62.109.28.99:/var/www/joomla/data/www/
Do you really want to continue? (y/n): y
Could not create directory '/home/\300\344\354\350\355\350\361\362\360\340\362\356\360/.ssh'.
The authenticity of host '62.109.28.100 (62.109.28.100)' can't be established.
RSA key fingerprint is 6d:7d:d9:06:02:06:c4:85:db:98:60:5c:14:12:31:6c.
Are you sure you want to continue connecting (yes/no)? yes
Failed to add the host to the list of known hosts (/home/\300\344\354\350\355\350\361\362\360\340\36
2\356\360/.ssh/known_hosts).
root@62.109.28.100's password:

Псевдонимы сайтов пригодятся ещё для быстрого доступа к сайтам на drupal, например к получить информацию о сайте dev можно следующим образом:

  • Код
  • Чистый код
  • Копировать в буфер
  1.drush @dev core-status

        

К сведению ещё хотел бы рассказать про основной конфигурационный файл drushrc.php, расположенный, в корне Drush (его нужно скопировать из c:\ProgramData\Drush\examples\example.drushrc.php или в /usr/share/pear/drush/example.drushrc.php в корневую директорию Drush), в нём можно определить параметры ($options) uri(u) и root(i) для сайта на drupal в этом случае у вас отпадёт надобность постоянно переходить в директорию с сайтом используя команду cd, но этот способ не подойдёт Вам если у Вас несколько сайтов.

  • Код
  • Чистый код
  • Копировать в буфер
  1.// Specify a particular multisite.
  2.# $options['l'] = 'http://example.com/subir';
  3.
  4.// Specify your Drupal core base directory (useful if you use symlinks).
  5.# $options['r'] = '/home/USER/workspace/drupal-6';

        

Никогда не использовал особо Git для контроля версий, больше мне пригодился Drush с возможностью синхронизации Drupal сайтов за несколько секунд. Надеюсь Drush как и Git помогут Вам сэкономить время и деньги.

В следующей статье я расскажу про расширенные возможности Drush при работе с удалённым сервером и отдельные команды, полный список которых Вы всегда можете найти на сайте http://drush.ws/.


Александр Ермаков