我在某处读过但似乎无法找到将秘密密钥添加到Heroku的位置,而无需将其放入源代码git存储库中?
我猜这有助于在我推入github时保持安全。
我该怎么做,这样做有意义吗?
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。不需要,因为您的生产密钥未存储。
正如马克所说,最好的方法是Heroku环境变量。你可以读到他们here:
为此,您需要使用Heroku CLI,您需要根据您的操作系统下载并安装它。不要忘记使用以下3个步骤设置Heroku CLI:
$ heroku login
$ cd ~/myapp
$ heroku create (your Heroku app name)
现在是时候设置配置变量了。命令是:
$ heroku config:set <ENVIRONMENT_VARIABLE>=<VALUE>
例如,我将在这里将我的API密钥保存为config var:
$ heroku config:set DARKSKY_API_KEY=8e11111111162218d22222222229cc22222c6
现在是时候在服务器端代码中使用它了。对于Nodej,您可以通过以下方式访问它们:
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
或删除配置var:
$ heroku config:unset DARKSKY_API_KEY
另外,我正在考虑heroku配置变量的.env文件,我们可以在本地编辑它们,然后在heroku上传它们。最后,我想出了这个解决方案。
要从heroku本地保存配置变量并能够在文件中本地更改它们,稍后在需要时,我们可以运行:
$ 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')
而已。