我试图在Heroku上部署Django应用程序。出于安全性的建议,我不想从settings.py文件提交并推送我的密钥,因此我将密钥放在单独的文件中并将其导入settings.py.我将包含密钥的文件放入.gitignore,以便它不会被提交。
现在的问题是,当我推送到Heroku时,我得到一个ModuleNotFoundError - 这是有道理的,因为这个文件从未提交过。是否有解决方法或最佳做法使用密钥而不暴露它们?
答案 0 :(得分:1)
您似乎注意到排除文件时发生了什么:它不存在,这正是安全性的实现方式。现在显而易见的问题是程序如何才能访问数据。
在Heroku上,通过在应用程序上设置环境变量来处理这个问题,然后在初始化程序时读出这些变量 - 编程语言之间的区别如何。
所以要么去https://dashboard.heroku.com/apps/<your-app>/settings
并在那里设置变量。或者使用命令行工具,如下所示:
heroku config:set KEY=value -a your-app
接下来的问题是如何处理本地开发。一个简单的解决方案可能是检查是否存在git-ignored文件,如果存在则使用它,否则从环境中读取值。