Лучший способ управлять рабочим процессом Drupal

luchshij sposob upravlyat rabochim proczessom drupal

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

У Drupal 7 таких проблем нет. Но ага, Drupal 8 поставляется со многими вещами для вождения. Одним из самых больших изменений в Drupal 8 является внедрение Composer. Хорошие вещи имеют свою цену.

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

Композитор

Composer – это менеджер зависимостей для PHP (например, npm для Node или pip для Python). Ядро Drupal использует Composer для управления основными зависимостями, такими как Symfony и Guzzle. Composer позволяет систематически управлять списком зависимостей и их вспомогательными зависимостями. Composer устанавливает эти зависимости с помощью манифестного файла под названием composer.json.

pUUUDONIPBc5YhXinYyVuLMZ6Gw8pfcjLaga

Этот файл composer.json содержит зависимости, необходимые для проекта. Вы можете установить его, запустив

composer install

впервые. Он находит, загружает, проверяет и загружает пакеты. Он также обеспечивает использование правильных версий каждого пакета и поддерживает файл журнала под названием composer.lock.

Примечание: всегда фиксируйте файл composer.lock, поскольку он содержит точную версию зависимостей, которые вы определили в проекте.

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

composer update package/package-name

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

Композитор Drupal

drupal-composer/drupal-project – это спасительный проект для управления зависимостями сайта с помощью Composer.

Чтобы установить этот шаблон проекта, выполните следующие действия.

composer create-project drupal-composer/drupal-project:8.x-dev drupal8 — stability dev — no-interaction

Он автоматически установит сайт Drupal со всеми зависимостями. Он также установит консоль Drupal и Drush локально.

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

Структура каталога

s7H0wBMBgz4kfLm1hjGlxdNLJV5KwlBsb9EN

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

Вы можете установить любые модули Drupal, темы и профили с помощью композитора, которые будут загружены в папку contrib внутри модулей, тем и профилей соответственно. Таким образом, в файле composer.lock будет запись всех модулей вклада Drupal вместе с зависимостями третьих сторон.

Чтобы загрузить любые модули и темы с помощью композитора, выполните следующие действия.

composer require drupal/mediumish_blog
# For installing theme, we will use drupal console
drupal theme:install mediumish_blog

Gitignore

Как и все зависимости и модули Drupal contrib, руководит темами композитор. Поэтому мы не будем передавать это содержимое Git.

# Ignore directories generated by Composer /drush/contrib /vendor/ /web/core/ /web/modules/contrib/ /web/themes/contrib/ /web/profiles/contrib/ /web/libraries/
# Ignore sensitive information /web/sites/*/settings.php /web/sites/*/settings.local.ph

Управление конфигурацией

Управление развертыванием и конфигурацией являются обычными действиями жизненного цикла проекта. Мы установили разные модули и настроили наш локальный сайт, но наш рабочий сайт не имеет такой конфигурации.

У Drupal 7 у нас был модуль функций, который используется для синхронизации конфигурации. Но Drupal 8 имеет встроенное решение для управления конфигурациями. Это позволяет экспортировать полные конфигурации сайта и сохранять их в файлах YAML. Экспортированные файлы можно импортировать на другой веб-сайт с тем же результатом.

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

Как синхронизировать файлы конфигурации

Откройте /web/sites/default/settings.php и установите $config_directories[‘sync’]

$config_directories[‘sync’] = ‘../config/sync’;

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

Теперь используйте консоль Drupal для экспорта конфигурации:

drupal config:export
# import on prod server
drupal config:import

Примечание: рабочий и локальный сайты Drupal должны иметь одинаковые UUID. Проверьте здесь для получения дополнительной информации.

Примечание: Управление конфигурацией Drupal имеет ошибку – данные специальных блоков нельзя ни импортировать, ни экспортировать. Просмотрите ссылку на проблему здесь.

Git

Мы будем использовать Git для добавления, фиксации и передачи данных локального сайта со всей конфигурацией. Это будет извлечено из сервера/сайта prod. Давайте посмотрим на поток:

# Local
git add .
git commit -m”Add commit message”
git push origin HEAD
# Server
git pull otigin HEAD
composer install # to install any new dependencies, drupal contrib modules, themes
drupal config:import # to import the configuration
drupal cache:rebuild all # rebuild the cache

Обновление модулей, тем и профилей

composer update drupal/mediumish_blog
drupal update:execute mediumish_blog
drupal update:execute all

Обновить ядро ​​Drupal

Как правило, мы сталкиваемся с проблемами обновления ядра Drupal. Но у композитора также есть простой способ управлять этим:

composer update drupal/core — with-dependencies

Он обновит ядро ​​Drupal и все связанные с ним зависимости.

Управление конфигурацией среды

Моим любимым аспектом Drupal как разработчика является возможность управлять различными конфигурациями среды. Это можно сделать с помощью модуля vlucas/phpdotenv, также поставляемого с шаблоном Drupal composer.

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

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

файл load.environment.php в корне загрузит этот файл .env и сделает его доступным для вас.

Как использовать файл .env

Откройте /web/sites/default/setting.php и добавьте этот набор кода:

$databases[‘default’][‘default’] = [ ‘database’ => getenv(‘MYSQL_DATABASE’), ‘driver’ => ‘mysql’, ‘host’ => getenv(‘MYSQL_HOSTNAME’), ‘namespace’ => ‘Drupal\\Core\\Database\\Driver\\mysql’, ‘password’ => getenv(‘MYSQL_PASSWORD’), ‘port’ => getenv(‘MYSQL_PORT’), ‘prefix’ => ‘’, ‘username’ => getenv(‘MYSQL_USER’), ];

Откройте файл .env и введите следующие учетные данные:

MYSQL_DATABASE=’db_name’ MYSQL_HOSTNAME=’localhost’ MYSQL_PASSWORD=’secret’ MYSQL_PORT=’3306' MYSQL_USER=’root’

Теперь, поскольку все наши аккаунты хранятся в файле .env, мы можем отправить файл settings.php на сервер и управлять его конфигурацией через файл .env.

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

Добавьте новую пару значений ключа в файл .env:

APP_ENV=’local’

Теперь скопируйте web/sites/example.settings.local.php в web/sites/default/settings.local.php и добавьте этот код в web/sites/development.services.yml под параметрами:

twig.config: debug: true auto_reload: true cache: false

Теперь откройте web/sites/default/settings.php и добавьте этот код:

$env = getenv(‘APP_ENV’);
$base_path = $app_root . ‘/’ . $site_path; $settingsFile = $base_path . ‘/settings.’ . $env . ‘.php’;
if (file_exists($settingsFile)) { include $settingsFile; }

Таким образом, если вы установите APP_ENV=’local’, отладка Twig будет включена. После производства вы можете отключить, установив APP_ENV=’prod’. Также можно настроить различные конфигурации для различных сред.

Вывод

Drupal 8 предлагает встроенное решение для экспорта и импорта конфигураций сайтов, которое гораздо лучше, чем то, что вы могли бы сделать в D7. В зависимости от модулей/тем contrib управляет сам композитор.

Это еще не идеально, поскольку нет стандартного подхода, но вышеописанный рабочий процесс является простым и эффективным решением. Вы можете определить свой собственный рабочий процесс на основе ваших потребностей.

Для справки я переместил код в это репо.

Надеюсь, вы нашли эту статью полезной. Я хотел бы услышать ваш отзыв 🙂

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

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

Ваш адрес email не будет опубликован.