Skip to main content
Темплейты для Drupal

Как перенести сайт на друпале на другой хостинг

Если кратко - мне необходимо сделать локальную копию действующего сайта, сделанного на друпале. Процесс я детально опишу ниже - пусть будет шпаргалка мне. Заодно и вам может пригодится.

Ну-с, приступим.

Чтобы безболезненно переехать на новый хост на работающем сайте должен быть установлен модуль backup_migrate.

Идем на страницу управления функцией backup & migrate (резервное копирование и миграция), во кладку advansed (продвинутое копирование). Ну или подставьте к вашему адресу сайта такой путь: admin/content/backup_migrate/export/advanced.

Здесь выставляем сжатие - GZIP, например. В блоке Database Options таблицы НЕ исключаем, а данные исключаем из следующих таблиц:

  • cache и chache_*
  • accesslog
  • search и search_*
  • sessions
  • watchdog

Место назначения оставляем "Manual  Backups Directory". Сохраняем настройку на будущее и нажимаем Backup Now (копировать сейчас).

Теперь логинимся на сервер по ssh. в линуксе с этим проблем вообще быть не должно, в винде я использую связку WinSCP + Putty.

Итак, в консоли пишем cd [путь к сайту] tar zcvf имя_архива.tgz public_html. Путь к файлам сайта, само собой у вас будет свой. Предварительно рекомендуется очистить кеш - архив будет значительно легче, особенно если сайт многостраничный.

Для винды удобнее будет команда zip -rv archive public_html (вместо tar).

Как только архив создастся - копируем на свой комп.

Теперь раворачиваем сайт на денвере (это в моем случае) или на новом хостиге (в зависимости от задачи).

Создаем базу, в файле sites/all/default/settings.php изменяем параметры доступа к базе, и если отдельно пропысывали - $baseurl тоже меняем.

Запускаем /install.php, ставим дру, запускаем update.php, если возникли ошибки - чиним. Включаем модуль backup & migrate, на странице admin/content/backup_migrate/destination/list/files/manual выбирем нужный архив с базой и восстанавливаем ее.

### 08.02.12 ### UPD:

В каждом конкретном случае объем работы по апгрейду друпал-сайта будет разный. На одном все пройдет гладко и безболезненно, на другом возникнет бешенное количество ошибок, предсказать которые просто невозможно. Кроме того, некоторые модули утратили свою актуальность, перестали поддерживаться. Опять же, существенные изменения API дают о себе знать очень часто.

Выход из всего этого только один: отлавливать те косяки, что можно отловить и исправить, в иных случаях - исктаь альтернативное либо компромиссное решение.

Не упустите из виду следующие моменты:

  • Проблема: в Drupal 7 не работает pathauto.
    Решение: формат токенов изменился, в связи с этим надо не забыть переписать шаблоны альясов. 

 

### Поделитесь вашими находками при апгрейде D6 -> D7. Списочек будем дополнять и расширять.

12

Comments

Дмитрий's picture
Дмитрий

Я слышал, что для переезда нужно просто все перекопировать на новый хост и настроить сайт. Вы что-то об этом слышали?

Роман's picture
Роман

Да, но сам этим заниматься не стал, а обратился в поддержку нового хостера Handyhost, и они сами мне всё перенесли.

Мария Шерскова's picture
Мария Шерскова

Можно и так. Только копировать архив (один файл) гораздо удобнее, чем ждать, пока перепишется несколько тысяч файлов (а если медиа-контента много?), плюс при переносе архивом файлы наверняка не потеряются, права у файлов останутся как были.  Во-вторых, с настройками с нуля вы провозитесь гораздо дольше, чем потратите на перенос сайта "по правильному сценарию". А так то, конечно, можно перекопировать и настроить.

Grigory's picture
Grigory

Добавлю свои пару копеек. Когда редактируешь settings.php, кроме изменения параметров доступа к базе данных и $baseurl, нужно проверить строчку
$cookie_domain = '.hostname';
если туда вписано имя прежнего домена, то нужно либо изменить это имя на новое, либо закомментировать строчку. Если $cookie_domain не соответствует имени текущего домена, на сайт не удастся залогиниться.

Вильям фон дер ПУхен's picture
Вильям фон дер ПУхен

я просто связался с поддержкой taghosting.ru и они уже помогли

Владислав Крашевcкий's picture

Вчера мигрировал сайт Patenroom, CCK полей не было, поэтому прошло легко, делал по инструкциям drupal.org и модулей, но всего затратил три дня на все новые настройки и модули, особенно понравились новые возможности итернационализации и новые фильтры для контента. Всё это требует отдельного объяснения. Но для сайта с множественными полями CCK и зависимыми полями придётся ждать официальных релизов CCK.

Мария Шерскова's picture
Мария Шерскова

Функционал CCK включен в ядро Drupal 7.

iPad's picture
iPad

Вот совершенно не вижу разницы межу обычным бэкапом базы, средствами phpmyadmin и описанным Вами способом через backup_migrate!
Суть ведь одна и та же.
С прошедшим вас!)

u8507801's picture
u8507801

advanced

Anonymous's picture
Anonymous

Большое Вам спасибо за этот подробный мануал!

aza's picture
aza

Добрый день, возникла проблема с переносом на сервер, на север есть сайт на Друпале под доманом site1.com, на этом же сервере создан новый домен site2.com, все файлы перенес с домена site1.com на site2.com, продублировал базу в phpmyadmin, прописал настройки settings.php, удалил кэш базы...но сайта нет :

<?php
// $Id: index.php,v 1.94 2007/12/26 08:46:48 dries Exp $

/**
* @file
* The PHP page that serves all page requests on a Drupal installation.
*
* The routines here dispatch control to the appropriate handler, which then
* prints the appropriate page.
*
* All Drupal code is released under the GNU General Public License.
* See COPYRIGHT.txt and LICENSE.txt.
*/

require_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

$return = menu_execute_active_handler();

// Menu status constants are integers; page content is a string.
if (is_int($return)) {
switch ($return) {
case MENU_NOT_FOUND:
drupal_not_found();
break;
case MENU_ACCESS_DENIED:
drupal_access_denied();
break;
case MENU_SITE_OFFLINE:
drupal_site_offline();
break;
}
}
elseif (isset($return)) {
// Print any value (including an empty string) except NULL or undefined:
print theme('page', $return);
}

drupal_page_footer();
вот эо и показывает в инспекторе элементов!
поможете плз!

Мария Шерскова's picture
Мария Шерскова

Очистить полностью кеш, запустить update.php и крон. Если после этого не выправится - значит что-то не так сделано. В остальном нужно смотреть на то, какие ошибки выдаются. Инспектор элементов (firebug?) тут особо не поможет.