Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Оглавление

Перенос конфигурации и размещение

Сайт на Drupal — это код, конфигурация и содержимое. Код переносят через Git и Composer. Конфигурация — типы материалов, поля, представления, права ролей, настройки модулей — хранится в базе, поэтому для переноса её выгружают в файлы. Содержимое остаётся на рабочем сайте.

Папка синхронизации

Путь к папке с файлами конфигурации задаёт файл настроек сайта:

// web/sites/default/settings.php
$settings['config_sync_directory'] = '../config/sync';

Путь указан относительно папки web, то есть файлы окажутся в site/config/sync — вне корня сайта, недоступные из браузера. Строку добавляют в конец файла; если такая настройка в нём уже есть, замените её значение.

Выгрузка

vendor/bin/drush config:export

Короткая запись — drush cex. В папке config/sync появятся сотни файлов YAML: system.site.yml с названием сайта, node.type.article.yml с типом «Статья», blog.settings.yml с настройками вашего модуля. Папку добавляют в репозиторий.

Загрузка

На другом экземпляре сайта, получив файлы из репозитория, выполняют:

vendor/bin/drush config:import

Короткая запись — drush cim. Drush покажет список различий — что будет создано, изменено и удалено — и после подтверждения приведёт конфигурацию сайта в соответствие с файлами.

Посмотреть различия, ничего не меняя, позволяет команда drush config:status.

Порядок работы

  1. На своём компьютере настраиваете сайт в панели и пишете код.
  2. Выгружаете конфигурацию: drush cex.
  3. Отправляете код и папку config/sync в репозиторий.
  4. На сервере получаете изменения и загружаете конфигурацию: drush cim.

На рабочем сервере настройки в панели не меняют: следующая загрузка конфигурации их затрёт.

Шаги размещения

После каждого обновления кода на сервере выполняют:

git pull
composer install --no-dev --optimize-autoloader
vendor/bin/drush updatedb -y
vendor/bin/drush config:import -y
vendor/bin/drush cache:rebuild
КомандаЧто делает
git pullПолучает ваш код и файлы конфигурации
composer install --no-devСтавит ядро и модули тех же версий, что у вас
drush updatedbПрименяет обновления базы — о них следующий урок
drush config:importЗагружает конфигурацию
drush cache:rebuildОчищает кеш

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

Настройки сервера

Данные, которые различаются между компьютером разработчика и сервером, в репозиторий не кладут. Их задают в settings.php сервера, читая из переменных окружения:

// web/sites/default/settings.php
$settings['trusted_host_patterns'] = ['^example\.com$', '^www\.example\.com$'];
 
$databases['default']['default'] = [
    'driver' => 'mysql',
    'database' => getenv('DB_NAME'),
    'username' => getenv('DB_USER'),
    'password' => getenv('DB_PASSWORD'),
    'host' => 'localhost',
];

trusted_host_patterns перечисляет домены, на которых сайт имеет право открываться. Веб-сервер настраивают на папку web, а папку web/sites/default/files делают доступной ему для записи. В панели отключают показ ошибок и включают объединение файлов CSS и JavaScript.

Частая ошибка

Нельзя переносить на рабочий сервер базу данных с компьютера разработчика: вы затрёте материалы и пользователей, созданные на сайте. Содержимое живёт на рабочем сайте и копируется только сверху вниз — с сервера к разработчику. Вверх идут только код и конфигурация.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.