Как и обещал, я решил рассказать о проблемах, которые могут возникнуть при обновлении Drupal. Вдохновило меня наличие большого числа руководств по обновлению до 7 версии, однако ни одной толковой статьи по обновлению до Друпал 8.

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

Обновление Drupal
Обновление Drupal

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

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

Еще пару слов скажу о различиях в системах обновлений. Для начала стоит определить версию установленной CMS. Обычно должно висеть уведомление о наличии обновлений, там можно посмотреть версию ядра и до какой версии стоит обновиться. Несмотря на то, что версии друпала 6 и 7 больше не поддерживаются, самым безболезненным будет обновление до последней минорной версии (на данный момент 7.43 и 6.38). Для перехода на Drupal понадобится провести миграцию, грубо говоря перенести сайт. Для начала, я расскажу о варианте обновления друпала, а потом как мигрировать на последнюю версию. Версии ниже 6 не рассматриваю в данной статье, так как они очень уж устарели, и их обновление может вызвать намного больше сложностей, чем создание нового сайта.

Обязательно сделайте резервную копию файлов сайта и базы данных перед началом любых работ!

 Итак, перейдем к самому процессу обновления Drupal 6 и 7

Сразу скажу, очень часто сайты на 6 друпале получается безболезненно обновить до последней версии 7.43

Для начала переводим сайт в "Режим обслуживания" - это можно сделать в админке через "Конфигурация/Разработка/Режим обслуживания"

С официального сайта скачиваем архив с последней версией 6 или 7 друпала (смотря какую версию хотим получить в итоге). 

В файловом менеджере удаляем все папки кроме папки sites (именно там хранятся все наши настройки и модули). Мы должны были удалить 6 папок includes, misc, modules,  profiles, scripts, themes; если на сервере есть другие папки, то их содержимое стоит изучить и оставить вместе с папкой sites

Следующим шагом мы достаем из архива файлы и закидываем их на сервер, кроме папки  sites, файлов .htaccess, robots.txt, web.config - они понадобятся для корректной работы сайта. Я бы советовал исключить из списка также текстовые файлы в корне сайта - на деле нужно заменить только файлы с расширением php. Текстовые файлы носят информационный характер, и в плане безопасности их стоит удалять с сервера - с их помощью можно вычислить версию друпала и подобрать уязвимость под данную версию.

После всех манипулций с файлами нужно открыть сайт по пути /update.php и обновить по шагам, следуя инструкции. В финале вы должны получить работающий сайт на последней версии Drupal. Обязательно перепроверьте, все ли корретно стало работать после обновления, и не стоит ли где подправить. При неудачном обновлении стоит откатиться к бекапу и попробовать обновиться до другой версии или обратиться за помощью к профессионалам.

Кстати, можно попробовать мигрировать с Drupal 5, 6 или 7 через модуль migrate_d2d, это аналогично второму способу, о котором речь пойдет дальше.

 

Теперь поговорим о миграции на 8 друпал. Процесс миграции происходит интересным образом и совсем не относится к обновлению, процесс скорее напоминает создание сайта с переносом контента старого сайта.

Перво-наперво нам нужно установить чистую последнюю версию Drupal (на данный момент это версия Drupal 8.1)

Это можно делать как локально, так и на сервере, желательно только чтобы один сайт смог бы получить доступ к файлам и данным другого сайта.

С настройками при установке не стоит заморачиваться, потому что все данные все равно будут перезатерты. Итак, после этого нам стоит установить модуль Migrate Upgrade. После его активации нам понадобится ещё пару системных модулей для корректной работы: Migrate, Migrate Drupal, Migrate Drupal UI

Установка модулей Migrate, Migrate Drupal, Migrate Drupal UI
Установка модулей Migrate, Migrate Drupal, Migrate Drupal UI

Нам выскочит предупреждение, что это экспериментальная функция, и мы дадим свое согласие:

Подтверждение установки экспериментальных модулей
Подтверждение установки экспериментальных модулей

 

Далее переводим сайт в режим разработки (кто не знает, это можно сделать в админке в меню  "Конфигурация/Разработка/Режим обслуживания"):

Включение режима обслуживания в Drupal
Включение режима обслуживания в Drupal

 

После этого мы можем перейти по ссылке на сайте /upgrade и там появится предупреждение перед запуском обновления:

Начало обновления Drupal
Начало обновления Drupal

Жмём далее и нам необходимо заполнить информацию для подключения сайта, который нужно обновить: базу данных и путь к файлам. К сожалению разработчики не продумали внятных понятий путей, поэтому тут советую особенно тщательно указывать полный путь к файлам!

Заполняем информацию для подключения к сайту
Заполняем информацию для подключения к сайту

Перед началом миграции Drupal на новую версию появится последнее предупреждение, какие пути удалось найти и соответственно эти данные будут перенесены.

Доступные пути обновления Drupal
Доступные пути обновления Drupal

Дальше пойдет процесс интеграции одного сайта с другим, во время обновления могут показываться ошибки об отсутствующих файлах:

Процесс миграции Drupal
Процесс миграции Drupal

В любом случае ждем окончания процесса:

Апгрейд конфигураций и модулей
Апгрейд конфигураций и модулей

При положительном исходе будет получен список пропущенных модулей, а также можно будет увидеть вновь воссозданый сайт на последней версии друпала. Однако не всегда может оказаться столь радужным. К примеру, у нас может выскочить следующая ошибка:

Ошибка при обновлении Drupal
Ошибка при обновлении Drupal

к огорчению, разработчики миграции друпала не конкретизируют причины проблемы обновления, кроме как конфликт каких-то данных или модулей на сайте.

В этом случае можно попробовать повторить операцию обновления, более тщательно уделив внимание сторонним модулям, либо попробовать мигрировать вручную.

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

Добавить комментарий