【发布时间】:2014-06-30 14:52:37
【问题描述】:
我正在尝试在 webfaction 上隐藏安全信息,例如 django 应用程序的数据库密码。
但我找不到使用环境变量设置这些信息的方式和位置?
【问题讨论】:
标签: django webfaction
我正在尝试在 webfaction 上隐藏安全信息,例如 django 应用程序的数据库密码。
但我找不到使用环境变量设置这些信息的方式和位置?
【问题讨论】:
标签: django webfaction
我开发了一个可以用 pip 安装的包:
pip install djangosecure
在你的 settings.py 中你可以使用类似的东西:
import djangosecure
...
DATABASES = {
'default': djangosecure.get_database('production'),
}
...
第一次运行管理命令时,系统会提示您输入数据库信息。
它可用于保护更多设置,请参阅自述文件: https://github.com/rafahsolis/djangosecure
更新: 更新:djangosecure>=0.0.4 不再有 get_database() 函数,它现在基于类工作,所以新用法是:
from djangosecure import DjangoDatabaseSettings
databases = DjangoDatabaseSettings(os.path.join(PROJECT_ROOT, 'databases.cnf'),
crypto_key_file='path/to/your/cryptokey)
DATABASES = {
'default': 'default': databases.settings('production'),
}
【讨论】:
os.env.get('DB_PASSWORD', None)
将它们添加到您的bash_profile。
在运行 SSH 后:
nano ~/.bash_profile
然后添加所需的变量并保存。示例:
export DATABASE_URL=postgres://username:password@host:port/databasename
这将创建一个名为DATABASE_URL 的环境变量,其中包含您的字符串内容。要进行测试,请在终端中运行 echo $DATABASE_URL。
【讨论】:
dj-database-url 包。不过,一般来说,要通过 python 访问环境变量,您可以使用os.environ.get('DATABASE_URL')。将DATABASE_URL 更改为您想要获取的任何环境变量。此外,请确保在使用 os.environ.get 之前拥有 import os。