Обновление ядра и модулей / Drupal 8

Прежде чем приступать к обновлению — всегда читайте логи на странице релиза ядра/модуля и уже на основании этой информации — принимайте решение — обновляться или нет.


Бэкап

Делаем резервную версию сайта:

drush ard

Если сайт сделан через Drupal Project, то девятый drush будет поставлен локально. Команда drush ard может не сработать.

Именно поэтому бэкап придется сделать вручную.

Выгружаем базу данных в текущую папку:

drush cr ; drush sql-dump > dump.sql

Архивируем папку с сайтом:

zip -r site.zip site

Обновление ядра

Ядро обновляется командой:

composer update drupal/core --with-dependencies -o

После обновления ядра необходимо обновить базу данных и выгрузить конфиги:

drush cr ; drush updb --entity-updates -y ; drush cex -y

Идем на страницу “Отчет о состоянии” и проверяем на наличие ошибок и смотрим на версию ядра:

/admin/reports/status

В некоторых случаях, когда нужно обновить старый сайт, нужно удалять папки core, vendor и composer.lock, предварительно сделав резервную копию:

zip -r core.zip core ; zip -r vendor.zip vendor ; zip composer.lock.zip composer.lock ; rm -rf core ; rm -rf vendor ; rm composer.lock

И обновить весь сайт:

composer update --with-dependencies -o ; drush updb --entity-updates -y ; drush cr ; drush cex -y

Будьте крайне осторожны, обновляя все на сайте. После обновления некоторых модулей — часть функционала сайта может оказаться неработоспособной.


Обновление модуля

Модуль обновляется точно также как и ядро. Единственное отличие, что вместо core необходимо прописать название модуля:

composer update drupal/modulename ; drush updb --entity-updates -y ; drush cr ; drush cex -y

Если модуль не обновился - возможно его нет в файле composer.json. Как правило, это значит, что модуль был установлен через drush.

Нужно заново установить его через composer:

composer require drupal/modulename ; drush updb --entity-updates -y ; drush cr ; drush cex -y

Все настройки модуля сохранятся.


Восстановление сайта через бэкап

Это больше актуально, если вы по каким-то причинам обновили сайт сразу на продакшине. Этого делать не рекомендуется. Лучше сделать апдейт на локалке или техническом сервере, после чего — перенести изменения на основной сайт.


drush

Если сайт сломан и нет времени разбираться, то лучше сразу развернуть бэкап.

drush arr backup.tar.gz --overwrite

Файл с бэкапом должен располагаться параллельно с папкой сайта.


Вручную

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

Импортировать БД, которая находится в файле dump.sql можно командой:

drush sql-drop ; drush sql-cli < dump.sql

sql-drop полностью очистит БД, доступы к которой хранятся в файле:

/sites/default/settings.php

sql-cli < dump.sql импортирует БД из файла dump.sql в БД, доступы к которой хранятся в файле:

/sites/default/settings.php

Убедитесь, что файл dump.sql на месте. Иначе можно очистить текущую БД, а импортировать будет нечего.

Сбрасываем кэш:

drush cr

Возможные проблемы


Последние записи журнала

Если сайт перестал работать, вместо страницы открывается непредвиденная ошибка или страница 500, то причину можно прочитать на странице “Последние записи журнала”:

/admin/reports/dblog

Находим последнюю ошибку. Если по контексту понятно в чем проблема - исправляем. Если нет - копируем ошибку и гуглим.


Журнал в ISPmanager

Попасть в журнал ISPmanager можно по адресу:

site.ru:1500/ispmgr

Журналы ошибок находится в сайдбаре -> WWW -> Журналы.

Открываем:

site.ru.error.log

Далее, аналогично с пунктов “Последние записи журнала”


Проблемные модули

Должен предупредить, что все, что написано ниже — это проблемы, с которыми столкнулся лично я. Вполне вероятно, что я делал что-то не так, и информация не отражает действительности. Если это так — напишите мне, буду рад исправиться.


Следующие модули лучше не обновлять:

- Block tabs;

- Color field;

С этими стоит быть осторожнее:

- Webform;

- Admin Toolbar;


После апдейта может поменяться разметка, а следовательно - верстка слетит.

Для того чтобы модули не обновились после команды:

composer update --with-dependencies -o

Нужно установить конкретную версию модуля. Например мы видим, что Block Tabs требует обновления:

Обновление ядра и модулей / Drupal 8 Программирование, Программист, Обучение, Drupal, Backend, IT, Разработка, Урок, Isp, Длиннопост

Т.к. сейчас установлена версия 8x-1.0-alpha3, то я копирую все, после 8x- и переустанавливаю Block Tabs, чтобы он не обновлялся и был зафиксирован на этой версии:

composer require drupal/blocktabs:1.0-alpha3
Другие посты об образовательной платформе ищите по тэгу GeekBrains. Всю необходимую информацию и отзывы ищите в нашем специальном разделе. Там вы найдёте все актуальные курсы GeekBrains.