Перенос конфигурации сайта в Drupal 8 с помощью drush и git

В предыдущей статье мы рассмотрели конфигурационную систему в друпал 8. В ней были описаны способы как с помощью админки импортировать и экспортировать конфигурацию сайта. Но это же можно делать и при помощи drush, и при этом с помощью git делать деплой на рабочий сервер.

Месторасположение папок, в которых лежат конфигурационные файлы, определяется в файле settins.php:


$config_directories['active'] = 'sites/default/files/config_tn5XVQ4dh2PByAMeCopfjfLImM2MTKPJHE81D2vdUAcAhTdVgJM7bPuv_4OW9zw7zutkEk_h2A/active';
$config_directories['staging'] = 'sites/default/files/config_tn5XVQ4dh2PByAMeCopfjfLImM2MTKPJHE81D2vdUAcAhTdVgJM7bPuv_4OW9zw7zutkEk_h2A/staging';
$config_directories['vcs'] = '../config_vcs';

Две первые папки (active и staging) мы рассмотрели в предыдущей статье , а папка vcs предназначена для гит репозитория. В нее мы будем экспортировать локальную конфигурацию сайта, затем делать push в удаленный репозиторий на рабочем сервере, который будет располагаться в такой же папке vcs. Затем получивший изменения репозиторий с помощью drush импортируем в staging.

Для работы с друпал 8 нам понадобиться drush 7.
В нем для работы с CMI есть следующие команды :

  • config-edit (cedit) - Открывает конфигурационный файл в текстовом редакторе.
  • config-export (cex) - Экспортирует конфигурацию из активной директории.
  • config-get (cget) - Отображает конфигурационное значение или все значения указанного файла.
  • config-import (cim) - Импортирует конфигурацию из указанной директории, прописанной заранее в settins.php.
  • config-list (cli) - Выводит список имен всех конфигураций.
  • config-set (cset) - Устанавливает значения напрямую в указанную конфигурацию.

Рассмотрим несколько примеров:



# Изменим имя сайта и слоган , открыв и отредактировав system.site конфигурацию.

local$ drush config-edit system.site

# Экспортируем активную конфигурацию сайта в каталог  'vcs'. 
# Путь до этого каталога определяется в переменной $config_directories[] в файле settings.php (см. Выше). 
local$ drush config-export vcs
local$ git status

# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#	modified:   ../config_vcs/system.site.yml
#

# Закоммитим все изменения которые мы получили.
local$ git commit -am "New configuration"

# сделаем push на удаленный сервер 
local$ git push

# по ssh  протоколу перейдем в  рабочий сервер
local$ ssh -A me@dev.server.example.com

##############################
#   Welcome to dev.server.example.com.
#   Last login: Wed Feb 26 19:43:14 2014 from localhost

dev$ cd www/docroot
dev$ git pull

# Импортируем все полученные конфиги и увидим  diff  между текущей конфигурацией и импортируемой.
dev$ drush config-import vcs --preview=diff