Перейти к основному содержанию
 

Обновление Drupal 8 до Drupal 9 в Windows

Drupal 9

Сегодня 1 января 2022 года, и я начну заниматься тем, что долго откладывал. А именно обновлю движок сайта с Drupal 8 на Drupal 9. Посетителей не много, все отдыхают. Так что самое время.

Имеется инструкция:

https://www.drupal.org/docs/upgrading-drupal/how-to-prepare-your-drupal-7-or-8-site-for-drupal-9/upgrading-a-drupal-8-site

https://www.drupal.org/docs/8/upgrade/upgrading-between-drupal-8-major-versions-eg-from-drupal-8-to-drupal-9

Обновление с помощью composer это, конечно, круто, но у меня сайт хостится на домашнем Windows сервере, так что обновлять будем по старинке, ручками.

Для начала обновим Drupal 8 до последней минорной версии 8.9.20. Можно обновиться до 8.8. Но лучше уж до последней.

drupal

Смотрим доступные обновления.

drupal

Текущая версия 8.9.20 уже не поддерживается. Будем обновляться на 9.3.0.

Минимальные требования

Убедимся, что система удовлетворяем минимальным требованиям:

https://www.drupal.org/docs/system-requirements

Базы данных

У меня MySQL. Требуется версия MySQL/Percona 5.7.8+. У меня MySQL 8.0.27, обновляться не требуется. Хотя инструкция имеется:

Обновление MySQL 8 на Windows Server 2016

Web сервер

У меня IIS 10. Drupal 9 работает на IIS 5, IIS 6, IIS 7, IIS 8 или IIS 10, нужно только чтобы PHP был нормально установлен.

PHP

Drupal 9 работает на PHP 7.3, так что обновляться тоже не требуется.

Установка PHP 7.3.7 на IIS 10

Система удовлетворяет минимальным требованиям.

Совместимость модулей

Для проверки совместимости модулей предлагают установить Upgrade Status, однако, он у меня не захотел включаться.

drupal

Поэтому я просто обновляю модули до последних версий. Некоторые модули уже не поддерживаются, например, Synapse Image Formatter. От таких модулей придётся отказаться и удалить их. Вспоминаю, что устанавливал этот модуль для вставки картинок в текстовом редакторе, чтобы они открывались в Colorbox. Убираю в текстовом редакторе эту кнопку и удаляю неподдерживаемый модуль.

drupal

Продолжаю ковырять модули. Для Metatag доступно обновление, но его можно установить только на Drupal 9. С такими модулями ничего не делаем, обновим после установки нового ядра.

drupal

Я так долго тянул с обновлением именно для того, чтобы все используемые модули стали поддерживать Drupal 9. К примеру, модуль Яндекс Метрики тоже пришлось снести и заменить обычным пользовательским блоком с кодом метрики, размещенным внизу страницы.

Дистрибутив

Скачиваю ZIP архив с дистрибутивом Drupal 9.3.0.

https://www.drupal.org/project/drupal/releases/9.3.0

Распаковываю архив.

drupal

drupal

Обновление Drupal 8 до Drupal 9

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

Останавливаю сайт в IIS. Drupal любит зажимать файлы, поэтому после остановки сайта можно перезапустить IIS:

iisreset

Удаляем из корня своего сайта папки core, vendor и все файлы корневой директории кроме web.config и ваших собственных файлов, которые не относятся к drupal.

Из скачанного дистрибутива копируем в корень своего сайта с заменой всё содержимое, кроме файла web.config.

drupal

Теперь сравниваем фалы web.config своего сайта и дистрибутива. Для сравнения содержимого я использую Total Commander.

Сравнить файлы с помощью Total Commander

В моём случае я не нашёл каких-то важных изменений, так что оставил свой конфигурационный файл без изменений.

Вручную или с помощью того же Total Commander сравниваем и синхронизируем файлы конфигурации drupal8\sites\default\default.settings.php и drupal8\sites\(ваш сайт)internet-lab.ru\settings.php. Я здесь не рассматриваю вопросы настройки поддержки мультисайтов на одном движке. Подразумевается, что у вас всё уже было настроено ранее.

Запускаем сайт на IIS. После запуска традиционно запускаем update.php.

drupal

Применяем обновления.

drupal

Если обновления не применяются, то инсталлятор покажет ошибки. У меня, к примеру, отобразилась несовместимая тема, что решилось прописыванием совместимостей в конфигурационном файле темы. Ещё отобразилась жалоба на отсутствие конфигурационного параметра $settings['config_sync_directory'], который пришлось указать.

drupal

Обновление завершено.

drupal

Установлена последняя версия Drupal 9.3.0. Теперь можно обновить остальные модули, которые требовали девятой версии, но это уже другая история.

Теги