Во-первых, отличный вопрос!
-E переключатель -E показывает только окружение в момент запуска процесса, поэтому любые изменения в этом методе будут незаметны. Таким образом, если данные загружаются в окружение после запуска процесса, то они не будут обнаружены с помощью этого метода. Однако, скорее всего, это неосуществимая стратегия, IMHO, по причинам, рассмотренным ниже.
Я согласен с "Двенадцатью факторами", что трюк с переменной окружения - это путь, по которому нужно идти. Однако существуют некоторые важные предостережения, которые не разъясняются в руководстве по "Двенадцати факторам", а также некоторые практические соображения и методы, которые необходимо использовать для достижения этой цели.
Во-первых, переменные окружения являются переменными (не постоянными). Все данные теряются при перезагрузке. Это означает, что если где-то сохранилась конфигурация не, то в случае перезагрузки сервера она будет невосстановима, если только не находится в памяти в /dev/brain0
sys-admin (не азартная игра, которую я бы сделал со 128-битными ключами). Если это личный ключ(и) сервера, то у вас в лучшем случае серьезная, а в худшем - катастрофическая проблема (вашему ЦС может понадобиться переиздание ключей). Это является хорошим аргументом в пользу того, что конфигурация должна быть где-то записана, и я не думаю, что многие люди будут спорить с этим. Однако, где/как его хранить, вот что важно.
Приложение Двенадцать Факторов решает эту проблему, хотя и не в простой форме. "Лакмусовая бумажка на предмет того, правильно ли приложение конфигурируется из кода, заключается в том, может ли кодовая база быть в любой момент сделана с открытым исходным кодом, без компромиссов в отношении каких-либо полномочий". Так что мы знаем, что мы должны записать его где-то , и что мы не можем поместить конфигурацию в кодовую базу. "Другой подход к конфигурированию - использование конфигурационных файлов, которые не проверяются в контроле за ревизиями". Это то, что я бы сделал.
В приложении "Двенадцать Факторов" сказано: "Легко по ошибке проверить в конфигурационном файле в repo". Чтобы противостоять этому, производственная конфигурация (например, приватные ключи) должна отличаться от конфигураций разработки и тестирования. Они также должны быть строго контролируемыми. Некоторые системы управления версиями, такие как git
, имеют чёрные списки (например, файл .gitignore
), которые препятствуют проверке в определённых файлах. Их также следует использовать. "Существует тенденция разброса конфигурационных файлов в разных местах и разных форматах, что затрудняет просмотр и управление всем конфигурационным файлом в одном месте. Кроме того, эти форматы, как правило, специфичны для языка или фреймворка." Это противодействует простому определению "переменных окружения" в конфигурационном файле. Затем они могут быть загружены сервером в окружение при запуске.
Что бы я сделал:
Использованы все перечисленные вами ключи. Вы можете просмотреть ключ в vim с помощью :help
:
:help <key>
, например:
:help v
или проверить этот vim cheat sheet.