Для корректного отображения сайта вам необходима поддержка Javascript и Cookies.

Перенос сайта на Drupal между серверами при помощи Drush

Опубликовал Dematron в ср, 26/12/2012 - 10:53

Обновлено в чт, 02/12/2021 - 09:28

Периодически возникает необходимость переноса сайтов под управлением Drupal от одного хостера к другому. И если бы небыло такой замечательной консольной проги как drush с ее возможностями - drush archive-dump и drush archive-restore, миграции проходили бы гораздо дольше и сложнее.

Типичный сайт на Drupal состоит из двух основных элементов: файлы (движок и все что накопилось за время работы) и база данных. Для корректной работы на новом месте нужно перенести обе части плюс внести некоторые изменения в загрузку.

Привычный «Cтарый путь» миграции предполагал следующее:

Перемещение базы

  1. создать новую пустую базу
  2. создать нового пользователя
  3. связать пользователя и базу (не забыв про корректные права доступа)
  4. создать дамп базы на старом месте
  5. импортировать базу на новый хостинг

Перемещение файловой части

  1. запаковать файлы сайта в zip или лучше в tar.gz (LinuxWay)
  2. переместить фалы на новый хостинг
  3. распаковать
  4. подредактировать файл settings.php вписав новый данные для доступа к базе и т. п.
  5. проверить и скорректировать владельца и права доступа на файлы

Новый путь (в светлое будущее)
Получаем доступ по SSH, переходим в папку установки Drupal и делаем всего 3 простых манипуляции
1. Создаем резервную копию

drush archive-dump

после завершения процедуры выдается сообщение с указанием пути где лежит наш архив
Archive saved to /home/user/drush-backups/archive-dump .......
2. Переносим архив на новый сервер по FTP, но я больше люблю SSH

scp [source-archive] [user]@[target-server]:[target-folder]

приблизительно так

scp /home/user/drush-backups/archive-dump/123.20121210_122505.tar.gz username@newservername.ru:/var/www/html/drupal

3. Получаем доступ по SSH на новом сервере, переходим в папку с архивом и выполняем команду на подобии такой:

drush archive-restore [source-archive] --destination=./[new-folder-name] --db-url=mysql://[mysql-user]:[mysql-password]@[target-server]/[db-name] --overwrite

например вот так

drush archive-restore 123.20121210_122505.tar.gz --destination=/var/www/html/site.ru/ --db-url=mysql://c1006_site:megapassword@localhost/c1006_site --overwrite

В результате drush создаст новую папку, распакует туда содержимое архива, распакует базу данных, сделает ее доступной и скорректирует данные в settings.php.

В данном примере однако стоит учитывать, что применим он только в том случае если у вас уже имеется созданная база данных с пользователем. Если же вам необходимо при распаковке дампа, кроме всего прочего, создать новую базу данных и пользователя то к исполняемой команде необходимо добавить

--db-su [mysql-root-user] --db-su-pw [mysql-root-password]

Вот собственно и все. Для получения информации о дополнительных возможностях drush выполните команду с флагом --help. Если необходимо получить информацию по конкретной команде то логика команды выглядит так

drush help [command]

Комментарии

Аватар пользователя Вадим

Спасибо.
Перенос с drush экономит мнооооого времени. Ранее переносил с помощью bash скриптов, но по какой-то причине часть файлов не распаковывалась, а через drush всё хорошо.

Аватар пользователя Дмитрий

Привет!
archive-dump не хочет работать, пишет Database dump failed
windows 7; Drush 6; D7
Есть варианты как победить?