Случилась нетривиальная задача — размножить один сайт на CMS Drupal 7 натрое, сделать отдельные копии для филиалов организации.
Задача осложнилась тем, что по тарифу хостинга полагалась только одна база данных MySQL, поэтому все три копии будут жить и работать вместе, разделенные разными префиксами в названиях таблиц.
Применялись: доступ на сервер по ssh, магия dush, кофе.
Журнал:
1. Находясь в папке исходного сайта (/sites/default, если он был единственный) выполняем команду.
# drush sql-dump >/path/to/file/drupal.sql
Сейчас можно сделать резервную копию базы, не помешает.
Заменяем в полученном дампе все вхождения старого пути. Добавляем префикс в таблицы.
С минусом — что искать, с плюсами — на что менять.
--- TABLE IF EXISTS ` +++ TABLE IF EXISTS `prefix_ --- TABLE ` +++ TABLE `prefix_ --- TABLES ` +++ TABLES `prefix_ --- INTO ` +++ INTO `prefix_ --- sites/default/ +++ sites/newdomain.ru/
Файл подготовлен.
В той же папке изначального "прототипа" выполняем еще одну команду, которая просто выполняет команду SQL, а с параметром --file берет команды из нашего подготовленного дампа.
# drush sqlq --file=/path/to/file/drupal.sql
Делаем новый сайт. Сделаем копию каталога /sites/default → /sites/newdomain.ru
Дописываем префикс в настройки соединения с базой данных в файле /sites/newdomain.ru/settings.php
--- 'prefix' => '', +++ 'prefix' => 'prefix_',
Все, теперь в панели управления хостингом добавляем алиас для исходного домена.
Приступаем ко второму "отпрыску". Дамп делать больше не требуется, просто нужно заменить prefix_ на prefix2_ и домен на домен.
Дальше можно работать через интерфейс Drupal — сменить названия, реквизиты, адреса и т.п.
У хранения нескольких сайтов в одной БД есть свои плюсы. По желанию можно обобщить некоторые таблички (пользователи, роли). Проще делать резервное копирование.
2 ответа к “Размножение сайтов на Drupal 7”
А domain_access модуль не смотрел для своей задачи?
Насколько я помню, это для одного сайта с разныи мордами. Тут сайты администрируются независимо, в будущем вообще могут разъехаться по своим хостам.