rails production secret_key的设置
2016-07-26 15:51
483 查看
问题: app error: Missing `secret_token` and `secret_key_base` for 'production' environment, set these values in `config/secrets.yml`
rails的安全机制需要一个秘钥。在rails 4.x版本的时候, 秘钥的设置在 RAILS_ROOT/config/secrets.yml, 这文件一般形如:
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
在非生产环境下, 秘钥都是'明文', '硬编码', 写在secrets.yml 里面的。这种方式会由于源代码的泄露, 造成安全问题, 所以这种方式存在安全隐患。
所以rails要求在生产环境下, 通过操作系统的环境变量来设置秘钥, 这样相对比较稳妥。
这里可以采取2种方法:
1. 自己动手, 利用linux系统的机制来设置环境变量 SECRET_KEY_BASE = XXX
2. 使用GEM dotenv-deployment帮你设置, 具体机制和方法1本质没区别。
ps: rails产生秘钥的指令: rake secret RAILS_ENV=production, 会产生一个秘钥(好尼玛长)
这里我选择方法2, 利用/etc/profile.d/ 下面添加脚本的方式来设置秘钥:
rake secret RAILS_ENV=production 产生一个秘钥
在目录 /etc/profile.d/xxx.sh, 下面新建一个
然后刷新你的shell, echo $SECRET_KEY_BASE, 输出成功
extra:
linux下面设置环境变量的方法:
1. 两个文件都是设置环境变量文件的,/etc/profile是永久性的环境变量,是全局变量,/etc/profile.d/设置所有用户生效
2. /etc/profile.d/比/etc/profile好维护,不想要什么变量直接删除/etc/profile.d/下对应的shell脚本即可,不用像/etc/profile需要改动此文件
参考链接:
http://stackoverflow.com/questions/23726110/missing-production-secret-key-base-in-rails
http://snakelab.cc/2014/11/08/ror-production.html
rails的安全机制需要一个秘钥。在rails 4.x版本的时候, 秘钥的设置在 RAILS_ROOT/config/secrets.yml, 这文件一般形如:
development: secret_key_base: xxxxxx test: secret_key_base: xxxxxx # Do not keep production secrets in the repository, # instead read values from the environment. production:
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
在非生产环境下, 秘钥都是'明文', '硬编码', 写在secrets.yml 里面的。这种方式会由于源代码的泄露, 造成安全问题, 所以这种方式存在安全隐患。
所以rails要求在生产环境下, 通过操作系统的环境变量来设置秘钥, 这样相对比较稳妥。
这里可以采取2种方法:
1. 自己动手, 利用linux系统的机制来设置环境变量 SECRET_KEY_BASE = XXX
2. 使用GEM dotenv-deployment帮你设置, 具体机制和方法1本质没区别。
ps: rails产生秘钥的指令: rake secret RAILS_ENV=production, 会产生一个秘钥(好尼玛长)
这里我选择方法2, 利用/etc/profile.d/ 下面添加脚本的方式来设置秘钥:
rake secret RAILS_ENV=production 产生一个秘钥
在目录 /etc/profile.d/xxx.sh, 下面新建一个
st_rails_secret_key_env.sh脚本, 内容:
export SECRET_KEY_BASE='你前面产生的那个秘钥'
然后刷新你的shell, echo $SECRET_KEY_BASE, 输出成功
extra:
linux下面设置环境变量的方法:
1. 两个文件都是设置环境变量文件的,/etc/profile是永久性的环境变量,是全局变量,/etc/profile.d/设置所有用户生效
2. /etc/profile.d/比/etc/profile好维护,不想要什么变量直接删除/etc/profile.d/下对应的shell脚本即可,不用像/etc/profile需要改动此文件
参考链接:
http://stackoverflow.com/questions/23726110/missing-production-secret-key-base-in-rails
http://snakelab.cc/2014/11/08/ror-production.html
相关文章推荐
- failed to load session "ubuntu"
- Rails Respond Format 应用
- rails中创建rake任务
- rails中的模型关联(进阶篇)
- rails中的模型关联(进阶篇)
- 记一次软raid1的修复过程
- rails中的多态表关联
- lintcode climbing-stairs 爬楼梯 递归 循环
- Rails中嵌套表单的解决
- django部署到apache出现DLL load failed
- daimachuan
- 70. Climbing Stairs
- Gradle sync failed: Gradle DSL method not found: 'compile()',Consult IDE log for more details
- Doing Homework again
- saiku 修改默认图表颜色
- http://www.caogen.com/blog/Infor_detail/83263.html
- intellj vailad code
- org.hibernate.AnnotationException: No identifier specified for entity: cn.itcast.domain.Counter
- Gtk-Message: Failed to load module "canberra-gtk-module"
- opencv Haartraining