Синхронізація Drupal сайтів за допомогою Drush

Часто в роботі доводиться синхронізувати версію сайту для розробки з "продакшном" версією сайту. Це можна зробити як описано в цьому пості, але можна і однією командою за допомогою Drush. Сьогодні Ма розглянемо як можна швидко синхронізувати 2 Drupal сайту за допомогою Drush.

Постановка задачі

Необхідно налаштувати швидке копіювання бази та файлів із сайту для розробки на робочий сайт та назад.

Робочий сайт

Домен: example.ru Сервер: 192.168.1.1 Папка сайту: /home/webmaster/domains/example.ru/html Доступ по ssh: webmaster, webpassword Mysq: база example (користувач - dbuser, пароль - dbpass)

Сайт для розробки

Домен: dev.example.ru Сервер: 192.168.1.2 Доступ по ssh: developer, devpassword Mysql: база devexample (користувач - devdbuser, пароль - devdbpass)

Хочу зазначити, що на обох серверах має бути встановлений drush, rsync та mysqldump.

Налаштування аліасів для drush

На сервері для розробки створюємо файл /home/webmaster/.drush/example.aliases.drushrc.php

Налаштування ssh підключення до сервера за ключом

Сервер розробки повинен мати можливість підключення до робочого сервера без пароля, для цього виконуємо наступні кроки на сервері для розробки:

  1. генеруємо ключ sshбез пароля :
  2. копіюємо ключ на сервер із робочим сайтом
  3. перевірка підключення по ssh без введення пароля

Копіювання бази даних та файлів

Усі команди виконуємо на сервері для розробки у папці сайту.

Після всіх попередніх кроків ми можемо копіювати файли з сайту для розробки на робочий сайт однією командою:

Для копіювання бази даних використовуємо таку команду

kalabro(не перевірено)

вт, 01/22/2013 - 09:04

Варто напевно згадати, що rsync і sql-sync мають безліч налаштувань корисних. Їх можна зашити для різного сервера в тому ж aliases.drushrc.php. Наприклад, так:

'command-specific' => array ( 'rsync' => array ( 'exclude-paths' => '.htaccess', 'delete' => TRUE, ), ),

А для лінивих є ще й sync_enable.drush.inc:

'target-command-specific' => array( 'sql-sync' => array( 'enable' => array('devel', 'hacked'), 'disable' => array('securepages')) , 'permission' => array( 'authenticated user' => array( 'add' => array('access devel information', 'access environment indicator'), 'remove' => 'change own password', ), 'anonymous user' => array( 'add' => 'access environment indicator', ), ), ), ), Так, він просто робить все за вас :)

вт, 01/22/2013 - 11:03

Дякую, корисне доповнення;) потрібно буде до статті включити.