大家好!
AWS 中的 Django 1.11 + PostgreSQL 9.6 + Gunicorn + Ubuntu 16.04
我想为敏感信息设置环境变量。(django key ,数据库密码...)
我研究了很多关于设置方式的文章。
但是当我尝试 os.environ['env_name'] 时,
.bashrc:不工作
.bash_profile:不工作
.profile:不工作
/etc/environment:不工作
Gunicorn 脚本文件。(systemd):我将它们设置在 gunicorn systemd 脚本中。它工作得很好。
但因为我也想在其他程序中使用环境变量,所以我将它们设置在1~5个配置之间。我不明白为什么 1~5 配置不起作用。设置环境变量是否有范围或优先级?
编辑:
我使用 Ubuntu 16.04 服务器。我无法重新启动终端 session 。
我试过“source .bashrc”和注销/登录。但它没有用。
当然,'echo $some_env_var' 正在工作,我说,django 无法读取。
最佳答案
.bashrc 适用于本地开发,但不适用于生产环境。我只是花了很多时间寻找这个问题的答案,这对我有用:
1) 在您的服务器上的某处创建一个名为 settings.ini 的文件。我在/etc/project/settings.ini 中做了这个
2) 使用以下格式将配置数据添加到该文件,其中键可以是环境变量,值是字符串。请注意,您不需要将值括在引号中。
[section]
secret_key_a=somestringa
secret_key_b=somestringb
3) 使用 python 的 configparser
库访问这些变量。下面的代码可能在您的 Django 项目的设置文件中。
from configparser import RawConfigParser
config = RawConfigParser()
config.read('/etc/project/settings.ini')
DJANGO_SECRET = config.get('section', 'secret_key_a')
来源:https://code.djangoproject.com/wiki/SplitSettings (ini 样式部分)
关于django - 我在哪里为 Django 设置环境变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44693485/