Перенос сайта на Drupal между серверами при помощи Drush
Периодически возникает необходимость переноса сайтов под управлением Drupal от одного хостера к другому. И если бы небыло такой замечательной консольной проги как drush с ее возможностями - drush archive-dump и drush archive-restore, миграции проходили бы гораздо дольше и сложнее.
Типичный сайт на Drupal состоит из двух основных элементов: файлы (движок и все что накопилось за время работы) и база данных. Для корректной работы на новом месте нужно перенести обе части плюс внести некоторые изменения в загрузку.
Привычный «Cтарый путь» миграции предполагал следующее:
Перемещение базы
- создать новую пустую базу
- создать нового пользователя
- связать пользователя и базу (не забыв про корректные права доступа)
- создать дамп базы на старом месте
- импортировать базу на новый хостинг
Перемещение файловой части
- запаковать файлы сайта в zip или лучше в tar.gz (LinuxWay)
- переместить фалы на новый хостинг
- распаковать
- подредактировать файл settings.php вписав новый данные для доступа к базе и т. п.
- проверить и скорректировать владельца и права доступа на файлы
Новый путь (в светлое будущее)
Получаем доступ по 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]
- 20138 просмотров
Комментарии
Спасибо.
Перенос с drush экономит мнооооого времени. Ранее переносил с помощью bash скриптов, но по какой-то причине часть файлов не распаковывалась, а через drush всё хорошо.
Привет!
archive-dump не хочет работать, пишет Database dump failed
windows 7; Drush 6; D7
Есть варианты как победить?