所有人!
Django 1.11 + PostgreSQL 9.6 + Gunicorn +Ubuntu16.04在AWS中
我想为敏感信息设置环境变量。(django密钥,DB密码.)
我研究了很多关于设置方法的文章。
但当我尝试os.env_name时,
但是由于我也想在其他程序中使用环境变量,所以我将它们设置在1~5个配置中。我不明白为什么1~5配置不起作用。是否有设置环境变量的范围或优先级?
编辑:
我使用Ubuntu16.04服务器。我无法重新启动终端会话。
我尝试了“源.bashrc”和注销/登录。但没起作用。
当然,'echo $some_env_var‘是有效的,我说,django不会阅读。
发布于 2017-06-22 08:01:43
在服务器中创建一个名为.bashrc的文件
export('the_name_in_bashrc', some_value)然后在settings.py里
import os
some_variable = os.environ.get('the_name_in_bashrc')发布于 2018-03-03 01:55:28
.bashrc将为本地开发工作,而不是在生产环境中工作。我只是花了相当长的时间来寻找这个问题的答案,下面是对我有用的答案:
1)在服务器上创建一个名为settings.ini的文件。我是在/etc/project/setings.ini中这样做的
2)使用以下格式将配置数据添加到该文件中,其中键可以是环境变量,值是字符串。请注意,您不需要用引号包围该值。
[section]
secret_key_a=somestringa
secret_key_b=somestringb3)使用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风格部分)
发布于 2019-12-16 15:22:39
最简单的解决方案是使用os.environ.get,然后以某种方式设置服务器环境变量(配置存储、bash文件等)。
另一种稍微复杂的方法是使用python-解耦和.env文件。下面是一个简单的方法:
1)安装python-解耦(如果不使用Docker,最好安装在venv中):
pip install python-decouple2)在Django-project的根目录中创建一个.env文件,添加一个类似的键;
SECRET_KEY=SomeSecretKeyHere3)在您的settings.py或任何其他要使用配置值的文件中:
from decouple import config
...
SECRET_KEY = config('SECRET_KEY')4)由于您可能不希望这些秘密最终出现在您的版本控制系统中,所以将该文件添加到您的.gitignore中。为了更容易地设置一个新项目,您可以将一个.env_default签入包含缺省/虚拟值的VCS中,这些值在生产中没有使用。
https://stackoverflow.com/questions/44693485
复制相似问题