xandeadx.ru Блог музицирующего веб-девелопера

Drupal → Обновляем Drupal 6 до версии 7

Опубликовано в
  1. Записываем список включённых модулей со страницы admin/build/modules. Drush юзеры могут воспользоваться командой drush pm-list --status=enabled.

  2. Отключаем, деинсталлируем и удаляем неиспользуемые модули. Аналогично поступаем с модулями, которые больше не понадобятся на Drupal 7 (например admin_menu, poormanscron и т.д.). Uninstall делается на странице admin/build/modules/uninstall.

  3. Обновляем Drupal 6 до последней минорной версии (если нужно). Drush юзеры могут воспользоваться командой drush up drupal.

  4. Обновляем контриб модули до последних версий. Проверить статус модулей можно на странице admin/reports/updates (должен быть включён модуль Update status). Drush юзеры могут воспользоваться командой drush up. Не забываем запускать update.php после обновления файлов модулей.

  5. Тестируем работу друпала с новыми версиями модулей.

  6. Обязательно делаем полный бэкап сайта. Drush юзеры могут воспользоваться drush archive-dump. Нет никакой гарантии что всё пройдёт гладко :) Лучше всего создать клон текущего сайта и проводить обновление на нём.

  7. Логинимся под юзером с ID 1 (рут админ).

  8. Переводим сайт в режим техобслуживания (admin/settings/site-maintenance). Если в settings.php есть переопределение параметра $conf['maintenance_theme'], то комментируем этот код.

  9. Устанавливаем Garland в качестве дефолтной темы (admin/build/themes). В качестве административной темы тоже выбираем Garland (admin/settings/admin).

  10. Выключаем все контриб модули (admin/build/modules).

  11. Удаляем файл sites/default/default.settings.php.

  12. Удаляем все папки/файлы относящиеся к ядру, за исключением папки sites. Системные папки и файлы (например cgi-bin или webstat), как и пользовательские файлы (например файлы идентификации Google или Яндекс) удалять не нужно.

  13. Скачиваем последнюю стабильную версию Drupal 7 и распаковываем файлы туда где раньше находились файлы Drupal 6.

  14. Изменяем файл .htaccess если в нём хранились специфические настройки сервера. Аналогично поступаем с robots.txt.

  15. Даём файлу settings.php права на запись.

  16. Открываем в браузере адрес http://your-domain/update.php и следуем указаниям мастера. Если по каким то причинам доступ запрещён, то открываем в текстовом редакторе файл settings.php и заменяем строчку $update_free_access = FALSE; на $update_free_access = TRUE; (после завершения мастера, этот параметр нужно вернуть в исходное состояние).

    У меня отчего-то любое обращение к update.php выполнялось по несколько минут. Пришлось сначала выкрутить на полную max_execution_time, а потом поставить патч, который и решил проблему.

  17. После окончания работы update.php делаем бэкап базы.

  18. Если на сайте использовался модуль CCK, то нужно сконвертировать поля в новый формат:

    — скачиваем CCK под Drupal 7
    — включаем модуль Content Migration на странице admin/modules
    — переходим на страницу admin/structure/content_migrate и конвертируем поля

    Для полей в разделе Unavailable fields нужно скачать (если это контриб) и включить соответствующие модули. После включения не забываем запускать update.php.

  19. Обновляем контриб модули записанные в первом пункте:

    — удаляем директорию модуля
    — скачиваем на его место версию под Drupal 7
    — включаем модуль
    — запускаем update.php

    Для Drush юзеров это:

    drush dl module_name
    drush en module_name
    drush updb

  20. Открываем страницу admin/reports/status и убеждаемся что всё работает как надо.

  21. Отключаем режим техобслуживания (admin/config/development/maintenance).

  22. Если тема была кастомная, то переделываем. Иначе просто обновляем так же как и модули.

По материалам Upgrading from Drupal 6 to 7.

Похожие записи

Комментарии RSS

Жди Андед наплыва криво-апдейтеров

23. Если ничего не получилось, востанавливаем сайт из бекапа, и продолжаем сидеть на 6-ке.

Обновился до семерки. Выдает:
Notice: Undefined index: 6 в функции user_node_load() (строка 3561 в файле /home/.../mistakes.ru/www/modules/user/user.module).
Notice: Trying to get property of non-object в функции user_node_load() (строка 3561 в файле /home/.../mistakes.ru/www/modules/user/user.module).

Может, подскажете, где копать?

копать в сторону трэкера drupal.org ;)

а как драшом обновлять модули с 6 на 7? обычный метод не подходит, по крайней мере мне ошибку выдаёт

drush dl modulename

cпасибо, великолепно!!!

а как драшом обновлять модули с 6 на 7?

drush up не забудь, базу тоже обновлять надо ;)

Спасибо, отличная инструкция!

Да, инструкция что надо! Добавлю: если на последних этапах появляются unexpected errors, то источник можно отследить в логах /admin/reports/dblog

у меня почему то xmlsitemap заглючил. пришлось убить и поставить заново, благо настроить именно его по новой не проблема)

После п.3 желательно сделать бекап - чтобы не выполнять тоже самое при неудачном обновлении модулей. Модули тоже можно обновлять отдельно(или небольшими группами:)) с последующим бекапом.

Если возникнут сложности с обновлением, обращайтесь - Сервис обновления версии Друпал

Вы уж извините за некропостинг.
Подскажите, хоть примерно, в какую сторону копать:
после обновления до 7ки (по вышеприведенной инструкции) сайт выдает
"Error
The website encountered an unexpected error. Please try again later." на любой странице.
без каких либо подробностей ;(

читайте логи

xandeadx, не серчайте ;)
Какие логи, где они лежат..В папке с друпалом ничего похожего не вижу, в базе искал таблицу вроде reports, но тоже ничего не нашел.

логи веб-сервера, логи php, логи mysql. где лежат зависит от сервера, можно узнать в гугле.
логи друпала в таблице watchdog

Оставлю на будущее:
Оказывается под "отключите все сторонние модули" подразумеваются так же не обязательные модули ядра.

переходим на страницу admin/structure/content_migrate и конвертируем поля

Все поля перенеслись кроме тех у которых модуль нужен filefield, который только для 6-ки, выдает ошибку "Missing field module: 'filefield'. This field cannot be migrated.". Т.к. это было поле с изображением, хотел создать еще одно поле в типе материала и задать ему виджет изображение, но почему-то на выбор такого виджета нет. Подскажите куда копать?

По пункту 10, если модулей насчитываются сотни, с чем я и столкнулся. :)
а. Отключать, соблюдая зависимости.
б. Первыми выключаем модули связанные с кешем, производительностью и сверткой JS/CSS.
в. Затем отключаем все модули CCK и Views - они самые тяжёлые в плане работы админки сайта и drush.

Спасибо большое за материал! Обновился без проблем с d6 до d7! Но и сайт у меня не особо напичканный модулями. Самое главное - все синонимы сохранились. Для seo очень важно.

Для всех, кто будет обновляться: после обновления ОБЯЗАТЕЛЬНО прошерстите настройки модулей. Например, в таких, как Page Title и Pathauto нужно поменять токены

Здравствуйте. Пытаюсь сотый раз обновить сайт до 7-ки, однако после пункта 16 (...update.php) появляется сообщение о ошибке "DatabaseSchemaObjectExistsException: Cannot add index system_list to table system: index already exists. in DatabaseSchema_mysql->addIndex() (line 437 of Z:\home\site.loc\www\includes\database\mysql\schema.inc)." и "окончания работы update.php" не происходит.
Можете помочь разобраться в чем дело?
Буду премного благодарен

Я вот на распутье. Обновлять сайт с 6 до 7. Или используя feeds перенести все накопленное в семерку "с нуля"? На сайте работает ubercart, боюсь обновление пройдет более, чем криво

Я вот на распутье. Обновлять сайт с 6 до 7.

1. Тема для 7-ки готова?
2. Я бы сделал с нуля.
3. Забыл бы про уберкарт и сделал на коммерце.
4. Уже вот-вот 8-ка с коммерцом сделают - уж лучше сразу на 8-ку! ;-)

Спасибо за ответ

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

Сейчас смотрю на модуль feeds, но не могу найти кто-то реально перенес с его помощью данные или только перевели на русский очевидные вещи

Возьми парсер http://xandeadx.ru/blog/drupal/554
Или сделай свой
И сделай с нуля. Уверяю так лучше будет
Ты прайсы в магазине, цены - обновляешь?

Больше склоняюсь делать с "нуля" так как разработка на 6 друпале не моя.
Нужно перенести все. Юзеров, таксономию, ноды и продукты из Ubercart. И после этого еще куча работы. а я вот "застряла". Спасибо, гляну парсер

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании