Автоматические обновления
Обновление сайта Drupal является сложным, трудоемким и дорогостоящим. Это сложная проблема, которая на первый взгляд кажется простой, обеспечивая безопасные и надежные обновления, которые дают уверенность владельцам сайтов и доступности для посетителей сайта.
Служба автоматического обновления для Drupal призвана упростить этот процесс и обеспечить уверенность в том, что обновление будет применяться корректно.
Обратите внимание, что автоматическое обновление является стратегической инициативой для проекта Drupal. Инициатива все еще находится в процессе реализации, поэтому есть несколько важных элементов, на которые следует обратить внимание:
- Модуль автоматического обновления еще не в ядре. В своем первоначальном виде он доступен в виде дополнительного модуля по адресу https://drupal.org/project/automatic_updates.
- Модуль в настоящее время является кандидатом на выпуск. Стабильный релиз ожидается очень скоро.
- На этом первом этапе модуль автоматических обновлений включает в себя функции оповещения об общих службах и проверки готовности и может применять обновления на месте вручную или через cron. Обновления, содержащие обновления базы данных, вызовут откат обновления.
- Модуль пока не поддерживает обновления Contribute или установки на основе композиторов. Они запланированы на Фазу 2.
Основные характеристики модуля автоматического обновления
Объявления о государственной службе (СРП)
Объявления о критических выпусках безопасности для основных и дополнительных модулей делаются нечасто. Когда выпущен PSA, владельцы сайтов должны проверить свои сайты, чтобы убедиться, что они в курсе последних выпусков, и сайт находится в хорошем состоянии для быстрого обновления после того, как исправления будут предоставлены сообществу.
Обновить проверки готовности
Не все сайты могут обновляться всегда. Проверка готовности - это автоматический метод определения того, готов ли сайт к автоматическому обновлению после предоставления сообществу нового выпуска. Например, сайты, которые имеют незапущенные обновления баз данных, смонтированы в файловых системах только для чтения или не имеют достаточно места на диске для обновления на месте, не могут получать автоматические обновления. Если ваш сайт не проходит проверку готовности и выпущен PSA, важно решить основные проблемы готовности, чтобы сайт мог быстро обновляться.
Обновления на месте
Как только служба PSA уведомила владельца сайта Drupal о доступном обновлении, а проверки готовности подтвердили, что сайт готов к обновлению, служба автоматического обновления может применить обновление.
Определенный сайт (или агентство или хостинг-провайдер) может решить предоставить дополнительные опции обработки БД помимо этих. Например, запустите дамп БД и разгрузите его на S3 или отправьте электронные письма / уведомления, чтобы расслабиться. И наконец, запустите обновления БД.
Если вы разрабатываете свои собственные пользовательские действия, имейте в виду, что любые действия, для которых требуется код, который мог измениться во время обновления, должны выполняться с помощью выделенных команд интерфейса командной строки. В противном случае выполнение вызовет старую версию кода. Это встроенное ограничение PHP. Примеры того, как вы можете это сделать, см. В плагине execute_updates, который вызывает консольную команду Symfony.
Установка
В настоящее время модуль автоматического обновления Drupal доступен в качестве дополнительного модуля на Drupal.org. На более поздней итерации и после значительного тестирования со стороны сообщества он будет включен в ядро Drupal. В то время все, что вам нужно сделать, это обновить до версии Drupal, которая включает эту функцию.
Чтобы установить версию contrib модуля Automatic Updates, вы будете следовать тем же инструкциям, которые вы использовали бы для многих других модулей на Drupal.org:
- Важно: скачать модуль через tarball. Установка через Composer в настоящее время не поддерживается.
- Затем установите модуль предпочитаемым способом.
Использование этого ресурса в настоящее время не предназначено для сайтов, использующих Composer. Были сделаны некоторые предположения, что сайт был установлен и управляется из архивных файлов. Кроме того, он намеренно поддерживает только обновления для Drupal Core. Последующие итерации модуля будут более полно поддерживать установки Drupal на основе Composer и Composer.
Использование модуля
Посещаемое использование
Функция PSA отображает обслуживаемый PSA на Drupal.org непосредственно в интерфейсе администратора Drupal, чтобы уведомить пользователей о предстоящем выпуске.
Функция проверки готовности будет запускаться регулярно, чтобы гарантировать отсутствие проблем, препятствующих применению обновления.
На странице конфигурации модуля пользователь может вручную запустить обновление на месте.
Использование без присмотра
Чтобы включить автоматические обновления, просто установите флажок на странице конфигурации модуля, чтобы запускать обновления на cron. Обновления будут применяться только в том случае, если сайт проходит проверку готовности.
Расширение автоматических обновлений
Обновления базы данных могут быть сложными, и владельцы сайтов могут по-разному мотивировать обработку обновлений, которые их содержат. В Drupal 8 модуль автоматического обновления использует архитектуру плагинов для обработки обновлений базы данных, чтобы система была расширяемой.
Настройка по умолчанию - перевести сайт в режим обслуживания, запустить обновления БД, а затем вывести сайт из режима обслуживания. Там нет пользовательского интерфейса для изменения этого (пока). Порядок и последовательность обработки обновлений БД настраивается с помощью config в automatic_updates.settings.yml. Также можно переопределить через settings.php $config['automatic_updates.settings']['database_update_handling'] = ['rollback', 'alternative_plugin_id', 'yet_another_plugin']. Это массив идентификаторов плагинов.
Доступные плагины, входящие в состав модуля:
- 'execute_updates'
- 'ignore_updates'
- 'maintenance_mode_activate'
- 'maintenance_mode_disactivate'
- 'rollback'
Как владелец сайта или поставщик услуг, вы можете написать дополнительные плагины для дальнейшего расширения этой функциональности, такие как, например, пользовательский плагин резервного копирования БД.
Архитектура системы автоматического обновления
Основные особенности
Объявления о государственной службе (СРП)
Объявления публичной службы проектируются путем использования предоставленного канала PSA.json от Drupal.org и отображения результатов с помощью простого drupal_set_message ().
Проверка готовности
Проверки готовности - это подключаемая система, позволяющая выполнять различные виды проверок, а также предупреждения или ошибки, отображаемые в интерфейсе администратора Drupal.
Обновления на месте
Обновления на месте спроектированы с использованием хешированных и подписанных «quasi-patches», созданных Drupal.org. Эти квази-патчи проверяются с помощью библиотеки php-libsodium, которая доступна и перенесена в PHP версии 5.3.
После проверки квази-патч применяется с функцией копирования PHP - просто перезаписываются все файлы, измененные в обновлении.
Особенности теста
В текущей версии модуля «Автоматические обновления» пользователь может включить тестовую версию Json-канала Drupal.org PSA, позволяющую увидеть, как будет отображаться информация PSA.
Для этого:
1. Включите модуль automatic_updates_test с помощью административного интерфейса модуля Drupal или с помощью команды:
$ drush pm-enable automatic_updates_test
2. Установите переменную, чтобы включить тестовый канал, используя команду:
$ drush vset automatic_updates_psa_endpoint http://localhost/automatic_updates/test-json
Если вы создаете свой собственный тестовый канал, вы можете заменить URL-адрес своего тестового канала этой командой.
Чтобы вернуть канал на официальный канал PSA на Drupal.org:
1. Команда Run
$ drush vset automatic_updates_psa_endpoint https://updates.drupal.org/psa.json
2. И отключите модуль automatic_updates_test, используя административный интерфейс модуля Drupal или выполнив команду:
$ drush pm-disable automatic_updates_test
Drupal.org Инфраструктура
Автоматические обновления для Drupal поддерживаются инфраструктурой Drupal.org и финансируются деятельностью Drupal Association.
Публичная реклама объявлений (PSA)
Drupal.org предоставляет JSON-ленту объявлений Drupal Public Security для использования модулем автоматических обновлений.
Канонический URL для этого канала: https://updates.drupal.org/psa.json, тестовый канал можно найти по адресу https://updates.drupal.org/psa-this-is-only-a-test.json, который будет использоваться для тестирования функциональности по мере необходимости.
Этот канал включает в себя список активных в настоящее время PSA со следующими деталями:
- title: Название PSA.
- link: URL-адрес полного PSA на Drupal.org.
- project: краткое название проекта, для которого предназначен СРП.
- type: тип проекта, для которого предназначен PSA, ядро, модуль, тема, дистрибутив и т. д.
- is_psa: флаг, который указывает, что сообщение является PSA, а не другим видом рекомендаций по безопасности.
- insecure: список версий уязвимого проекта, которые в настоящее время небезопасны. Это не указывает, какие версии будут помечены как небезопасные. Этот список будет обновляться после публикации релиза безопасности, включая также новые небезопасные версии.
- pubDate: дата публикации PSA.
Например, если выпуски Drupal 7 и 8 от 8 мая 2019 года - PSA-2019-05-07 и различные уязвимости третьих сторон - PSA-2019-09-04 были включены в psa.json, канал будет выглядеть следующим образом:
[ { "title" : "Drupal 7 and 8 release on May 8th, 2019 - PSA-2019-05-07", "insecure" : [ "4.7.0-beta3", … "8.7.0-rc1", "8.7.0", "8.7.4" ], "link" : "https://www.drupal.org/psa-2019-05-07", "pubDate" : "2019-09-20T22:09:16+00:00", "project" : "drupal", "type" : "core", "is_psa" : "1" }, { "project" : "securitydrupalorg", "pubDate" : "2019-09-12T21:35:55+00:00", "is_psa" : "1", "type" : "module", "insecure" : [], "title" : "Various 3rd Party Vulnerabilities - PSA-2019-09-04", "link" : "https://www.drupal.org/psa-2019-09-04" } ]
Затем этот канал анализируется модулем автоматического обновления для отображения в интерфейсе администратора Drupal. Другие модули или службы также могут использовать и отображать этот канал.
Генерация пакетов
Система упаковки Drupal.org - это то, что производит загрузки проектов .tar.gz и .zip на Drupal.org. В то же время, когда эта система работает, она также обновляет фасад Composer и, с добавлением этой системы автоматического обновления, генерирует «quasi-patches», которые используются для обновления сайта с помощью модуля automatic_update.
Подписание пакета и безопасность
Чтобы гарантировать, что пакеты 'quasi-patch' безопасны и могут быть проверены, Drupal.org использует архитектуру хэширования и подписывания пакетов, основанную на проекте BSD Signify.
Участники Drupal создали PHP-реализацию Signify, которая доступна в пространстве имен Drupal GitHub: https://github.com/drupal/php-signify.
Эта библиотека используется для создания SHA-хеш из файлов, включенных в хеш-код проекта, которые затем подписываются с использованием пары открытого / секретного ключей, сгенерированной из HSM в инфраструктуре Drupal.org.
Предоставление обратной связи
Чтобы оставить свой отзыв об этом первом поколении модуля автоматических обновлений, создайте проблему в очереди выпуска автоматических обновлений.
Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.