django - 我在哪里为 Django 设置环境变量?

标签 django bash ubuntu environment-variables

大家好!

AWS 中的 Django 1.11 + PostgreSQL 9.6 + Gunicorn + Ubuntu 16.04

我想为敏感信息设置环境变量。(django key ,数据库密码...)

我研究了很多关于设置方式的文章。

但是当我尝试 os.environ['env_name'] 时,

  1. .bashrc:不工作

  2. .bash_profile:不工作

  3. .profile:不工作

  4. /etc/environment:不工作

  5. 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/

相关文章:

python - 在 Django 中过滤

bash - 如何排除 "$*"中的 bash 输入参数

bash - 在 shell 中查询内存详细信息

xml - 针对 2 个 XSD 验证简单 XML - XMLCopyEditor

php - 安装 Acquia CLI 时出错

python - 如何将上下文变量与 Django 模板中的 SQL ID 进行比较?

javascript - 从模板调用 Django 函数? (应该很容易)

python - 从 django Feincms 转储数据

php - 在再次运行之前等待源 bash 脚本完成

sql - 有没有一种机制可以在 Ubuntu .deb 包上升级/创建数据库?