我有ubuntu服务器,Rails 5.0和apache web服务器 我也有很多网站
当我添加新网站时,我收到错误“从应用程序收到不完整的回复”
当我检查apache日志时,我看到消息:
App 14561 stderr: [ 2017-01-17 21:01:16.5804 14591/0x0000000064e100(Worker 1) utils.rb:85 ]: *** Exception RuntimeError in Rack application object (Missing `secret_key_base` for 'production' environment, set this value in `config/secrets.yml`) (process 14591, thread 0x0000000064e100(Worker 1)):
我的config / secrets.yml包含默认值:
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
此外,我刚刚通过文件/ etc / profile中的文件设置了env变量SECRET_KEY_BASE
我看到的比通过命令echo $SECRET_KEY_BASE
如何修复错误Incomplete response received from application
答案 0 :(得分:2)
尝试重新启动服务器,可能需要重新启动才能获取config
个文件中的新更改。
你的config / secrets.yml文件也应该有:
production:
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
答案 1 :(得分:2)
首先,请注意/etc/profile
仅在调用交互式登录shell时获取,因此此文件中设置的任何变量都不会在启动时由Web服务器守护程序运行,这就是为什么它在你的尝试中没有按预期工作。
由于您正在使用Apache + Phusion Passenger,您可以使用SetEnv
的mod_env
选项在Apache配置文件中设置特定于应用程序的环境变量。
否则,您可以通过读取应用程序服务器文件系统上的配置,从应用程序代码中设置环境变量。您可以使用像dotenv
这样的宝石来自动化这种模式。
有关文档参考,请参阅Phusion Passenger的文档About Environment Variables: Passenger-Served Apps。
答案 2 :(得分:1)
根据您启动服务器的方式,ENV变量可能不可见。
你试过了吗?
Authentication
中讨论了有关使用Rails服务器的环境变量的一些讨论
答案 3 :(得分:0)
sudo a2enmod env
rake secret
... outputs a big long string ...
/etc/apache2/sites-available/*.conf中的某个地方
<VirtualHost ...>
SetEnv SECRET_KEY_BASE "thebiglongstringgeneratedbyrakesecret"
</VirtualHost>
apache2ctl -t
Syntax OK
apache2ctl restart
curl https://my-server-url -I # or http
如果确实有效,请发表评论。