16

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

アプリはRuby1.9とPassenger3.0で正常に動作していました。2.0にアップグレードしたところ、Passenger3.0が正しくコンパイルされません。彼らは私にPassengerPre4.0を使用するように提案しました、そしてそれはうまくコンパイルされました、しかしアプリを動かしません...

4

4 に答える 4

19

私の場合、それを引き起こしている答えを見つけました。私の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
于 2013-03-11T23:05:16.563 に答える
4

上記で解決しない場合は、まったく同じエラーメッセージが表示されますが、原因は異なります。

私の場合、外部データベースサーバーを使用していましたが、それはダウンしていました。

外部データベースサーバーをバックアップすると、問題が修正されました。

しかし、これを解決する前に、私たちは乗客の再コンパイルなどについて考えることに多くの時間を費やしました。

このメモが誰かの時間を節約することを願っています。

于 2013-04-01T15:35:04.103 に答える
1

この問題を解決するには、phusionphassengerhttps://github.com/phusion/passenger/wiki/Debugging-application-startup-problemsによるこのガイドに従って ください。

于 2013-07-25T14:48:53.923 に答える
1

今後の参考のために:構成に間違ったデータベースクレデンシャルがあり、同じエラーが発生しました。

于 2015-01-14T06:03:01.927 に答える