我在某处读过但似乎无法找到将秘密密钥添加到Heroku的位置,而无需将其放入源代码git存储库中?
我猜这有助于在我推入github时保持安全。
我该怎么做才有意义呢?
答案 0 :(得分:2)
http://docs.heroku.com/config-vars
然后将开发密钥添加到初始化程序:
#config/initializers/keys.rb
development:
SOME_KEY = 'abc123' #not your production key
testing:
SOME_KEY = 'abc123' #not your production key
#production:
#blank
可选择将初始化程序添加到.gitignore。不需要,因为您的生产密钥未存储。
答案 1 :(得分:1)
正如Mark所建议的,最好的方法是Heroku环境变量。您可以阅读关于它们的here:
为此,您需要使用Heroku CLI,您需要根据自己的操作系统下载并安装它。不要忘记通过以下三个步骤来设置Heroku CLI:
$ heroku login
$ cd ~/myapp
$ heroku create (your Heroku app name)
现在是时候设置配置变量了。命令是:
$ heroku config:set <ENVIRONMENT_VARIABLE>=<VALUE>
例如,我要将我的API密钥保存为配置变量:
$ heroku config:set DARKSKY_API_KEY=8e11111111162218d22222222229cc22222c6
,现在该在服务器端代码中使用它了。对于Nodejs,您可以通过以下方式访问它们:
process.env.DARKSKY_API_KEY
像这样:
const weatherURL =`https://api.darksky.net/forecast/${process.env.DARKSKY_API_KEY}/${latitude},${longitude}?units=si`;
对于其他语言(例如Ruby,Java),请选中此link。
您可以通过输入以下内容查看配置变量:
$ heroku config
或删除配置变量:
$ heroku config:unset DARKSKY_API_KEY
此外,我还在考虑一个用于heroku配置变量的.env文件,我们可以在本地对其进行编辑,然后将其上传到heroku。最后,我想出了这个解决方案。
要从heroku本地保存cofig var并能够在文件中本地更改它们,以后需要时可以运行:
$ heroku config | sed 's/: */=/g; /^=/d' >> HEROKU_CONFIG_ENV.env
其中HEROKU_CONFIG_ENV.env
只是一个文件名,您可以随意命名。该脚本将HEROKU_CONFIG_ENV.env
文件保存在项目的根目录中。
修改密钥后,是时候将它们上传到Heroku并通过运行以下命令来设置heroku配置变量:
$ heroku config:set $(cat HEROKU_CONFIG_ENV.env | sed '/^$/d; /#[[:print:]]*$/d')
就是这样。