乘客:内部服务器错误(Passenger: internal server error)

2019-07-21 06:57发布

我安装了Apache,乘客和西纳特拉和部署应用程序。 试图访问时提示错误:

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,和3.0乘客甚至不正确编译。 他们建议我使用客运预4.0,它编译罚款,但不运行应用程序...

Answer 1:

我发现是什么原因造成它在我的案件的答案。 在我config.ru我被重定向STDOUT这样的:

log = File.new("logs/std.log", "a+")
STDOUT.reopen(log)

卸下重定向到日志中,并重新启动。

貌似乘客需要STDOUT检测工作“预加载”。


编辑:我目前使用以下解决方案将日志重定向到文件,并保持乘客快乐(基本上就是复制标准输出到日志文件,而不是重定向):

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


Answer 2:

如果上面没有为您解决,我有不同的原因完全相同的错误消息。

在我的情况下,我们使用一个外部数据库服务器,并且已经下降。

使外部数据库服务器备份解决了该问题。

但是,我们解决了这个之前,我们花了很多时间思考重新编译客运等

希望这记节省有人一段时间。



Answer 3:

要解决此问题,请按照本指南由PHUSION phassenger https://github.com/phusion/passenger/wiki/Debugging-application-startup-problems



Answer 4:

对于未来的参考:我在配置,这导致了同样的错误,有错的数据库凭据。



文章来源: Passenger: internal server error