Пассажир: ошибка внутреннего сервера
Я установил 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, и он скомпилирован отлично, но не запускает приложение...
Ответы
Ответ 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 устраняет проблему.
Но прежде чем мы это решили, мы потратили кучу времени, думая о перекомпиляции пассажира и т.д.
Надеемся, что эта заметка позволит кому-то сэкономить время.
Ответ 3
Чтобы решить эту проблему, пожалуйста, следуйте этому руководству phusion phassenger
https://github.com/phusion/passenger/wiki/Debugging-application-startup-problems
Ответ 4
В будущем: у меня были неправильные учетные данные в моей конфигурации, что привело к той же ошибке.