微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

红宝石 – 乘客:内部服务器错误

我安装了Apache,Passenger和Sinatra并部署了一个应用程序.尝试访问时出错:
An error occurred while starting up the preloader: it did not write a startup response in time.

Application root
    /var/www/html/test
Environment (value of RAILS_ENV,RACK_ENV,Wsgi_ENV and PASSENGER_ENV)
    production
Ruby interpreter command

    /usr/local/bin/ruby

User and groups

    UnkNown

Environment variables

    UnkNown

Ulimits

    UnkNown

我该如何解决

编辑

在应用程序日志中,我发现这一行错误

!> Ready
!> socket: unix:/tmp/passenger.1.0.14019/generation-0/backends/preloader.14049
!>

宝石列表:

bigdecimal (1.2.0)
builder (3.2.0)
bundler (1.3.1)
daemon_controller (1.1.1)
fastthread (1.0.7)
io-console (0.4.2)
json (1.7.7)
minitest (4.3.2)
passenger (4.0.0.rc4)
psych (2.0.0)
rack (1.5.2)
rack-protection (1.4.0)
rake (0.9.6)
rdoc (4.0.0)
sequel (3.45.0)
sinatra (1.3.5)
test-unit (2.0.0.0)
tilt (1.3.4)

系统版本:

Ruby 2.0
Apache 2.2
Amazon EC2 Instance

该应用程序运行正常与Ruby 1.9和乘客3.0.我刚刚升级到2.0,而Passenger 3.0甚至没有编译正确.他们建议我使用Passenger Pre 4.0,它编译好,但不运行应用程序…

解决方法

我发现答案是在我的情况下造成的.在我的config.ru我正在重定向STDOUT像这样:
log = File.new("logs/std.log","a+")
STDOUT.reopen(log)

重定向删除到日志中,并重新启动.

看起来乘客需要STDOUT来检测工作的“预加载器”.

编辑:我正在使用以下解决方案将日志重定向文件并保持乘客满意(基本上只是将stdout复制到日志文件中,而不是重定向):

log = File.new("logs/std.log","a+")
def STDOUT.write string
    log.write string
    super
end
STDOUT.sync = true

原文地址:https://www.jb51.cc/ruby/273125.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐