Где хранить и как загружать конфиги и параметры (main-local, params-local) в Yii2?

Здравствуйте. Подскажите пожалуйста, кто как решает следующую ситуацию:

Есть приложение, над которым непрерывно работает команда разработчиков. Приложение будет независимо развернуто на нескольких серверах (дедик или vps). Кодовая база одна и та же. На каждом production-сервере требуется конфигурирование приложения (подключение к БД и другие параметры, уникальные для каждого сервера) средствами main-local и params-local

Если взять в качестве примера yii2-app-advanced, то в нем предполагается для конфигов и параметров использовать файлы main.php и params.php которые лежат в репозитории, а для "перекрытия" локальных параметров production-сервера используются main-local.php и params-local.php которые не должны лежать в репозитории (содержат конфиденциальные данные) и данные для каждого сервера отличаются.

Вопрос: как загружать на сервер main-local.php и params-local.php для production-окружения, при этом поддерживать их в актуальном состоянии для каждого сервера? Что если кто-то из команды разработчиков переделывает что-то так, что это требует обновления этих файлов? Как не упустить этот момент?

upd: я понимаю, что можно файлы main-local.php и params-local.php предназначенные для production либо загружать на сервер через ftp/sftp либо править напрямую на сервере, но мне такой вариант не нравится, т.к. можно легко допустить ошибку, и это прежде всего не быстро. Например, обновить приложение я могу через git pull, а вручную конфиги мгновенно не поправить, придется ненадолго останавливать приложение. Пока в голове крутится вариант с отдельным git репозиторием для каждого production-сервера, тогда обновлять приложение можно будет так
cd /var/www/app; git pull; cd /var/www/app-config; git pull

что будет срабатывать почти мгновенно

upd: main-local.php и params-local.php имеются в виду те, что используются в production
  • Вопрос задан
  • 1695 просмотров
Решения вопроса 1
@matperez
Может поступить как советуют https://12factor.net/ru/ и грузить данные в конфиг для прод сервера через переменные среды. В конфиге будет что-то вроде:
'components' => [
  'db' => [
    'dsn' => getenv('db_dsn')
    ...
  ],
  ...
]


А в dev окружении можно оставить обычный конфиг. Ничего страшного что там будет логин и пароль к локальной базе.

А сами конфиги *-local.php храните там же они хранятся в yii-advanced - в папке environments.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Дописать логику составления итогового конфига с привязкой к домену на котором работает система
Ответ написан
slo_nik
@slo_nik Куратор тега Yii
Добрый вечер.
Вопрос: как загружать на сервер main-local.php и params-local.php, при этом поддерживать их в актуальном состоянии для каждого сервера? Что если кто-то из команды разработчиков переделывает что-то так, что это требует обновления этих файлов? Как не упустить этот момент?


Просто удалите эти файлы из gitignore и появится возможность из грузить в репозиторий. Хотя зачем -local.php на другом сервере, если он содержит данные для конкретного сервера?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы