Работая с несколькими Drupal сайтами на одном хостинге, удобно использовать встроенный в Drupal механизм мультисайтинга. О преимуществах работы Drupal в режиме мультисайтинга разговор отдельный. Но обновление версии ядра Drupal в этом случае имеет определенную специфику. Нельзя обновить все сайты за один раз, т.к. у каждого сайта будут свои особенности, которые придется решать по-отдельности. Ниже изложен порядок действий, который привел к желаемому результату. Но сначала оговорка. Работоспособной процедура обновления сайта Drupal с версии 6 до версии 7 стала только после выхода релиза 7.4. Не надо пытаться делать обновление с прежними версиями.

0.Составить полный список модулей, которые используются сайтом. Выяснить на drupal.org наличие версий этих модулей под Drupal7. Возможно, функционал некоторых модулей перекочевал в ядро Drupal, как например, произошло с модулем CCK. Некоторые модули прекратили свое развитие на версии 6 и их функционал выполняют другие модули под новыми названиями для версии 7. На этом этапе нужно принять взвешенное решение о необходимости обновления. Нужно иметь ввиду, что хорошие шансы на простое обновление только у тех сайтов, которые создавались по принципу “не написав ни строчки кода”. Ибо Drupal6 и Drupal7 - это не две версии одной и той же CMS, а две разные CMS, т.к. у них разные API. В Drupal7 нет многих функция API Drupal6, а те, что сохранились по названию имеют другой набор входных параметров. Чаще всего, список параметров, передаваемых через запятую в Drupal6, заменен в Drupal7 массивом параметров [каждый из которых тоже зачастую является массивом]. Кроме модулей нужно позаботиться о новой версии темы оформления. Если все необходимые модули и тема оформления для новой версии есть, либо от непортированных под семерку можно отказаться, переходим к следующим пунктам.

1. Если действующая версия инсталляции Друпал не самая последняя (на сегодня это 6.22), то нужно сначала обновиться до последней версии (не забывая про резервные копии).

2. Рядом с каталогом установки Друпал шестой версии создаем другой каталог для версии 7. Например, шестая версия размещалась на хостинге в каталоге “/home/my_login/drupal”, здесь “/home/my_login/” - домашний каталог на хостинге; “drupal” - каталог инсталляции Друпал6. Тогда создаем каталог “/home/my_login/drupal7”.

3. Копируем последнюю версию Drupal7 со страницы http://drupal.org/project/drupal

4. Устанавливаем как обычно Drupal7 в новый каталог. Для этого можно временно создать поддомен одного из рабочих доменов, либо использовать какой-то свой тестовый домен. В любом случае, нужно на хостинге подключить этот домен/поддомен, указав для него в качестве домашнего каталога вновь созданный. В данном примере это - “/home/my_login/drupal7”. На этом шаге нам нужно убедиться в том, что данный хостинг поддерживает работу с Drupal7. Например PDO (расширение PHP), как показала приктика, присутствует не на всех хостингах. А без PDO Drupal7 не работает.

5. Устанавливаем и тестируем в Drupal7 все модули, которые необходимы для нашего сайта.

6. Делаем архив каталога “/home/my_login/drupal/sites/нашсайт.ru”.

7. Делаем копию БД нашего сайта и сохраняем к себе на ПК (с пометкой “рабочая 6” или другой понятной нам). Можно использовать phpMyAdmin хостера, но лучше воспользоваться скриптом - http://sypex.net/ru/ или аналогичным. Это быстрее, проще и удобнее.

8. Регистрируемся на сайте в Drupal6 под именем пользователя с ID=1 (который создается при установке).

9. Переводим сайт в режим техобслуживания (на странице admin/settings/site-maintenance)

10. Переходим на страницу admin/build/themes и назначаем тему по умолчанию - Garland.

11. На странице admin/build/modules отключаем все модули, которые не входят в раздел “Ядро - обязательное”. Возможно, отключение придется делать в несколько этапов из-за зависимостей между модулями. Весьма кстати было бы на этом этапе критически оценить надобность всех модулей. Если какие-то из установленных модулей не планируется использовать в версии 7, то нужно их не только отключить, а еще и деинсталлировать на странице admin/build/modules/uninstall. При этом будут удалены из БД данного сайта таблицы, созданные этими модулями, и записи в общих настройках сайта. На другие сайты в данной мультисайтинговой установке Drupal это не повлияет.

12. Делаем копию БД нашего сайта и сохраняем к себе на ПК (с пометкой “6 с отключенными модулями” или другой понятной нам).

13. На хостинге копируем каталог “/home/my_login/drupal/sites/нашсайт.ru” в “/home/my_login/drupal7/sites/нашсайт.ru”. Копируем, а не переносим для возможности быстрого отката. Если сайт объемный и места для копирования не достаточно, то переносим, тем более, что у нас есть резервная копия, сделанная на шаге 6.

14. В панели управления хостингом изменяем домашний каталог для нашего сайта с “/home/my_login/drupal” на “/home/my_login/drupal7”. Например, на CPanel 11 нет возможности изменить каталог, пришлось просто удалить домен и создать заново в новом каталоге.

15. Удалаям файл “/home/my_login/drupal7/sites/нашсайт.ru/settings.php” и на его место копируем “/home/my_login/drupal7/sites/default/default.settings.php”, соответственно, переименовав его в “settings.php”. Устанавливаем на этот файл права “666”.

16. Запускаем обновление http://нашсайт.ru/update.php Если на этом этапе возникают проблемы, то нужно поколдовать в файле settings.php:
строку “$update_free_access = FALSE;”
нужно заменить на “$update_free_access = TRUE;”.
После обновления вернуть обратно “FALSE”.

17. Делаем копию БД нашего сайта и сохраняем к себе на ПК (с пометкой “7 сразу после обновления” или другой понятной нам).

18. Включаем модули.

19. Запускаем обновление http://нашсайт.ru/update.php

20. На странице admin/reports/status проверяем наличие ошибок и пытаемся с ними разобраться. Если не удается, то откатываемся, восстанавливая БД из резервной копии с пометкой “рабочая 6”, перенося сайт на прежнее место в каталог “/home/my_login/drupal/sites/нашсайт.ru” и измененяя домашний каталог сайта в первоначальное состояние.

21. Если с модулями все нормально, включаем свою тему оформления на странице admin/appearance/list

22. Делаем копию БД нашего сайта и сохраняем к себе на ПК (с пометкой “7 рабочая” или другой понятной нам).

23. Переводим сайт в рабочий режим на странице admin/config/development/maintenance

24. Приводим в порядок внешний вид сайта: расположение блоков, цвета, шрифты и прочее.

Важные примечания:

1. Не лишним будет еще раз напомнить, что Drupal6 и Drupal7 - это совершенно разные СМС и сложных сайтах с большим количеством самописного кода переход может оказаться весьма и весьма сложным и длительным процессом. В связи с чем нужно понимать, для чего именно нужен переход на “семерку” и “стоит ли овчинка выделки”.

2. В этом описании ничего не говорилось о DNS. В общем случае может оказаться, что IP-адреса у нашего сайта на “шестерке” и того же сайта на “семерке” могут оказаться разными. Если управление DNS делегировано хостеру, то проблемы не возникнет. Единственное, что может быть - задержка с обновлением DNS из-за кэша. Если DNS используется свой, то нужно будет выяснить, не изменился ли IP-адрес сайта и, при необходимости, внести соответствующие корректировки.

3. Такое количество резервных копий БД - вовсе не параноя, а объективная необходимость, котрая может спасти вас в слуае проблем и невозможности поднять сайт в версии 7. Делаются они не долго, а экономят времени, нервов и жизней много.

Ярлыки: