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


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

Резервное копирование

Создание резервной версии сайта:

drush ard
Войдите в полноэкранный режим Выход из полноэкранного режима

Если сайт делается через проект Drupal, девятый 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 
Enter fullscreen mode Выйти из полноэкранного режима

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 
Войти в полноэкранный режим Выйти из полноэкранного режима

Затем аналогично с пунктами «Последние записи журнала».

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

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

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

  • Вкладки блоков;
  • Цветовое поле;

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

  • Webform;
  • Панель инструментов администратора;

После обновления может измениться разметка, а значит — слетит верстка.

Чтобы предотвратить обновление модулей после команды:

composer update --with-dependencies -o 
Войти в полноэкранный режим Выйти из полноэкранного режима

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

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

composer require drupal/blocktabs:1.0-alpha3 
Вход в полноэкранный режим Выход из полноэкранного режима

Оцените статью
Procodings.ru
Добавить комментарий