我正在开发一个连接到几个服务的网络应用程序,例如:New Relic,Mailgun。
对于New Relic,我有一个API密钥。对于Mailgun,我有一个登录名和密码。我显然不想将它们检入版本控制(并将它们推送到Github)。存储库最终将公开。
我使用capistrano进行部署,目前在deploy.rb中有以下行:
set :app_environment, "PORT=3005 GA_CODE=UA-123456-1 GA_URL=myawesomedomain.com NEW_RELIC_LICENSE_KEY=1234abc1234abc1234abc MAILGUN_USER=postmaster@myawesomedomain.com MAILGUN_PASS=321cba"
然后,我的节点应用程序创建一个upstart作业,并将这些变量指定为环境变量:
NODE_ENV=production PORT=3005 /* more of the same */ node app.js
Deploy.rb未检入版本控制,因此它似乎是保证安全的好方法。但是,我不确定这是否是正确的方法:它感觉非常hackish我确定有更好的方法来保证我的密码安全吗?感谢。