以下是我现在正在使用的内容:
Ubuntu Trusty 14.04
Rails 4.2.6
Ruby 2.2.3
乘客
Nginx的
当我尝试访问IP时,我收到此消息:
Incomplete response received from application
当我看到nginx / error.log时,我看到:
Missing `secret_token` and `secret_key_base` for 'production' environment, set these values in `config/secrets.yml`
在服务器上我做了:
RAILS_ENV=production bundle exec rake secret
我把这个结果放在每个文件中以便进行测量:
~/.bashrc
~/.bash_profile
~/.profile
/app/shared/config/local_env.yml
对于所有shell脚本,格式为:
export SECRET_KEY_BASE="[key]"
对于我刚使用的local_env.yml
:
SECRET_KEY_BASE="[key]"
我也试过没有引号输入它。
每次我做出更改时,我都重新启动了服务器。没有雪茄。
还有什么问题?
- 更新
我甚至直接将秘密密钥添加到secrets.yml文件中。所以现在我认为我的问题要么与乘客/ nginx有关,要么在某处有拼写错误。
答案 0 :(得分:4)
更有可能的是,实际上没有设置环境变量而不是Rails没有提取它们。你在偷偷摸摸的秘密,我不这么做。我在Unix etc/environment
中手动设置它们,并且不检查任何秘密进入源代码控制。但以下几个步骤可以帮助您解决或磨练问题。
在您的Ubuntu服务器上以获取系统范围的环境变量
1- $env
寻找你的SECRET_TOKEN和SECRET_KEY_BASE。该错误告诉您这些没有设置,这只是一种检查env的技术。 (如果已设置,RAILS_ENV也将显示在列表中。)
2- $sudo nano /etc/environment
添加以下行 - 使用双引号之间的实际值。不要使用[密钥]或任何程序替换。
export SECRET_TOKEN="T99ABC..."
export SECRET_KEY_BASE="99ABC..."
3- $logout
/ $login
重新加载环境变量
4- $env
- 再次检查环境
寻找你的SECRET_TOKEN和SECRET_KEY_BASE。
5-再次尝试部署。如果失败,请再次使用$env
检查环境变量。它将告诉您部署中的某些内容是否粉碎了您的SECRET_ * env vars。