Skip to content
This repository has been archived by the owner on Mar 25, 2019. It is now read-only.

Деплой приложения на продакшен

Andrey Ivnitsky edited this page Jul 24, 2018 · 5 revisions

Деплой осуществляется в полуавтоматическом режиме. Схема файлов и билдов выглядит следующим образом: image (исходник).

Перед добавлением коммита в master ветку!

Так как добавление коммита в мастер-ветку сразу инициирует деплоймент с запуском обновлений и т.п.,то перед этим необходимо создать бэкап текущей базы: drush @dru.prod sql-dump --result-file="$HOME/backups/drupalru--<YYYY.MM.DD>.sql" --gzip, где YYYY.MM.DD - это, конечно же, дата создания дампа. Например, drush @dru.prod sql-dump --result-file="$HOME/backups/drupalru--2018.06.06.sql" --gzip.

Деплоймент

Вся процедура деплоймента заключается в добавлении коммитов в master ветку.

Это событие запускает автоматический деплой, которое осуществляется с помощью сервиса Zen.CI. Главной задачей последнего является создание бэкапа, обновление репозитория на сервере и запуск нужных скриптов. После того, как zen.ci актуализирует репозиторий, находящийся по адресу ~/repo (указано в yml-описании), он выполняет сценарий описанный в файле .zenci.yml (прогресс выполнения сценария можно наблюдать здесь) и запускает скрипт деплоя. Этот скрипт занимается созданием нового "билда", который состоит из: * копирования файлов репозитория, за исключением папки .git * копирования с заменой файлов из "эталонной" папки. Она содержит секретные файлы конфигураций, подтверждения владения доменом и симлинка на папку с файлами. * установки root-симлинка на этот билд. Root-симлинк - это адрес, куда обращается сервер для обработки запросов. * запуска обновлений, очистки кэша * удаления устаревших билдов, превышающих количество максимально допустимых для хранения, указанных в конфигурации store_versions сценария * создания дампов базы для dev и local окружений. Dev окружение - это сайты dev.drupal.ru и stage.drupal.ru. Local - это локальные копии разработчиков.

Последеплойные дела

После успешного деплоймента последней версии кода на прод, необходимо обновить dev/stage базы, для которых автоматически были созданы дампы. Необходимо запустить на dev-сервере:

cd $HOME/domains/dev.drupal.ru/profiles/drupalru/scripts/sync/dev
./sync-db.sh @dru.dev
./sync-db.sh @dru.stage

На этом всё. Далее следует описание окружения, для корректной работы скриптов, которое уже настроено.

Настройки окружения

Для корректной работы скриптов, должны быть настроены:

  • Продакшен сервер
    • Drush alias @dru.prod
    • Drush alias @dru.temp - тот же прод, но с другой базой. Там будут проводиться "грязные делишки" во время подготовки дампов.
    • Переменные окружения:
      • DRUPALRU_DEV_DUMP, которая должна содержать полный путь до места, где будет храниться дамп, включая само название, заканчивающееся расширением sql. Как видно из названия переменной речь идёт о дампе, для dev и stage окружений, который может содержать (и обычно содержит) приватные данные. Важно! Файл должен содержать минимум 128-битный хэш для того, чтобы имя файла было недоступно для злоумышленника.
      • DRUPALRU_TEAM_ROLE - название роли, пользователи, которой будут экспортированы в dev/stage-дамп для переноса на соответствующий сервер.
  • Dev/stage сервер
    • Drush alias @dru.dev
    • Drush alias @dru.stage
    • Переменные окружения:
      • DRUPALRU_DEV_DUMP_SOURCE, полный путь до файла дампа для dev/stage окружения на продакшен сервере. Должно быть доступно по http, а имя совпадать с переменной DRUPALRU_DEV_DUMP на прод сервере.

Пояснения

Если переменная DRUPALRU_DEV_DUMP на прод-сервере содержит значение $HOME/domains/drupal.ru/sites/default/files/prod-dump-xxx.sql, то значение переменной DRUPALRU_DEV_DUMP_SOURCE на дев-сервере должно быть https://drupal.ru/sites/default/files/prod-dump-xxx.sql.gz. Обратите внимание на различающиеся расширения в имени файла. При создании дампа он будет сжат drush'ем и к нему автоматически добавится суффикс .gz.