
Надеюсь, это правильный сайт, чтобы задать этот вопрос.
У меня есть веб-сервис, который я пытаюсь настроить с помощью NginX с Phusion Passenger, работающим на приложении Ruby Sinatra. Проблема в том, что когда я пытаюсь запустить сервер и протестировать сайт, я получаю следующую ошибку:
zsh:1: no such file or directory: passenger/buildout/agents/SpawnPreparer
Теперь я смог определить, что SpawnPreparer
вызывает zsh
, хотя, я не уверен, почему. Я даже не использую zsh
и не использовал его, когда создавал сервер. Тем не менее, я хотел бы знать, возможно ли настроить Passenger в nginx.conf для использования другой оболочки, с помощью которой можно порождать его процессы? Если да, то как?
Это Phusion 4.0.14
Спасибо!
решение1
Когда Phusion Passenger порождает приложение, он делает это, вызывая команду $SHELL -lc '/path-to-passenger-root/buildout/agents/SpawnPreparer /path-to-passenger-root/helper-scripts/rack-loader.rb <SOME ARGUMENTS>'
. Это описано здесь:https://github.com/phusion/passenger/wiki/Проблемы-отладки-запуска-приложения#объяснение-процесса-порождения. Здесь $SHELL — это оболочка пользователя, настроенная в базе данных пользователей ОС (/etc/passwd). В вашем случае ваш пользователь настроен на zsh в качестве оболочки. Вероятно, это настройка вашей ОС по умолчанию.
Ваше сообщение об ошибке указывает на то, что он не может выполнить файл passenger/buildout/agents/SpawnPreparer
. Другими словами, Phusion Passenger думает, что /path-to-passenger
равно passenger
. Это, вероятно, означает, что вы установили неправильное значение для passenger_root
директивы, которая диктует правильное значение /path-to-passenger
.