Подтвердить что ты не робот

Пассажир: ошибка внутреннего сервера

Я установил 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

Как я могу его решить?


Edit

В журнале приложений я нашел эту строку ошибки:

!> 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 и Passenger 3.0. Я просто обновился до 2.0, и Passenger 3.0 даже не компилируется правильно. Они предложили мне использовать Passenger Pre 4.0, и он скомпилирован отлично, но не запускает приложение...

4b9b3361

Ответ 1

Я нашел ответ, что вызывает его в моем случае. В моем 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

Ответ 2

В случае, если вышеуказанное не решит его для вас, у меня было то же сообщение об ошибке с другой причиной.

В моем случае мы использовали внешний сервер базы данных, и он исчез.

Приведение резервной копии внешнего сервера db устраняет проблему.

Но прежде чем мы это решили, мы потратили кучу времени, думая о перекомпиляции пассажира и т.д.

Надеемся, что эта заметка позволит кому-то сэкономить время.

Ответ 4

В будущем: у меня были неправильные учетные данные в моей конфигурации, что привело к той же ошибке.