Синхронізація 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 підключення до сервера за ключом
Сервер розробки повинен мати можливість підключення до робочого сервера без пароля, для цього виконуємо наступні кроки на сервері для розробки:
- генеруємо ключ sshбез пароля :
- копіюємо ключ на сервер із робочим сайтом
- перевірка підключення по 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
Дякую, корисне доповнення;) потрібно буде до статті включити.