Перенос конфигурации и размещение
Сайт на 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.
Порядок работы
- На своём компьютере настраиваете сайт в панели и пишете код.
- Выгружаете конфигурацию:
drush cex. - Отправляете код и папку
config/syncв репозиторий. - На сервере получаете изменения и загружаете конфигурацию:
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.
Частая ошибка
Нельзя переносить на рабочий сервер базу данных с компьютера разработчика: вы затрёте материалы и пользователей, созданные на сайте. Содержимое живёт на рабочем сайте и копируется только сверху вниз — с сервера к разработчику. Вверх идут только код и конфигурация.