Comments 12
Насколько я помню апач при запуске с запароленным сертификатом спрашивает пароль интерактивно прямо во время старта. То есть даже в некоторых местах переменным окружения не доверяют.
0
.gitignor
Всё таки ".gitignore", мне кажется.
Всё таки ".gitignore", мне кажется.
0
Стоит обратить внимание на dotenv-linter
0
Есть ещё один вариант — управлять виртуальным окружением через pipenv. Оно уже из коробки поддерживает .env файлы и выставляет оттуда переменные окружения при выполнении команд pipenv shell / pipenv run. Остается лишь обратиться к ним из проекта любым удобным способом.
+1
Вопрос, чем плохо иметь в /etc/environment
export KEY=«Ключ»
И в питоне получать os.environ.get('KEY') ???
export KEY=«Ключ»
И в питоне получать os.environ.get('KEY') ???
0
Мне единственному кажется странной идея использовать библиотеки для загрузки в окружение нежелательных к сохранению в файлы переменных из, опаньки, сохранённых файлов?.. :)
+4
Да, действительно, наблюдается некоторая непоследовательность:
Хранить параметры в файле плохо, поэтому давайте будем хранить в переменных окружения, которые запишем в файл. И для этого нам еще нужны библиотеки сторонние!
Вдобавок, если нам потребуется, например, группировать переменные, то, простите — только плоская структура:
AWS_ACCESS_KEY/AWS_SECRET_KEY — это еще просто.
Как вы, например, зададите параметры подключения к базам для Django (settings.DATABASES)?
Я лично использую YAML-файлики, которые перезаписывают все дефолтные переменные. Файлы храню в /usr/local/etc — но это уже предпочтения.
Очень не рекомендую хранить в папке с проектом ничего локально-зависимого. Пример: для отладки я очень часто синхронизирую код в папке с проектом на удаленный сервер с помощью rsync (lsyncd). Если там лежит какой-нибудь local_settings.yaml для моей локальной системы — он тоже будет отправлен на сервер, хотя там будет нужен свой. Ну а сколько историй о том, как кто-то по ошибке закоммитил локальный конфиг…
Хранить параметры в файле плохо, поэтому давайте будем хранить в переменных окружения, которые запишем в файл. И для этого нам еще нужны библиотеки сторонние!
Вдобавок, если нам потребуется, например, группировать переменные, то, простите — только плоская структура:
AWS_ACCESS_KEY/AWS_SECRET_KEY — это еще просто.
Как вы, например, зададите параметры подключения к базам для Django (settings.DATABASES)?
Я лично использую YAML-файлики, которые перезаписывают все дефолтные переменные. Файлы храню в /usr/local/etc — но это уже предпочтения.
Очень не рекомендую хранить в папке с проектом ничего локально-зависимого. Пример: для отладки я очень часто синхронизирую код в папке с проектом на удаленный сервер с помощью rsync (lsyncd). Если там лежит какой-нибудь local_settings.yaml для моей локальной системы — он тоже будет отправлен на сервер, хотя там будет нужен свой. Ну а сколько историй о том, как кто-то по ошибке закоммитил локальный конфиг…
0
Историй много таких, конечно. Потому и додумались, что в проекте есть только .env.example (любое другое имя), как набор возможных параметров и примеры их наполнения. А вот нужный "локальный" .env обязательно в .gitignore. Естественно, этот файл никогда не попадет на сервер, пока вы не начнете использовать для деплоя НЕ git.
Но даже для Вашего случая с rsync есть отличное решение:
rsync --filter=":- .gitignore" ...
+2
Sign up to leave a comment.
Переменные окружения для Python проектов