Hopefully this is the correct site to ask this question.
I've got a webservice I'm attempting to set up using NginX with Phusion Passenger riding a Ruby Sinatra application. The problem is that when I try to start the server and test the site, I get the following error:
zsh:1: no such file or directory: passenger/buildout/agents/SpawnPreparer
Now, I've been able to determine that SpawnPreparer
is calling zsh
, although, I'm not sure why. I don't even use zsh
and I wasn't using it when I built the server. Nevertheless, what I'd like to know is if it's possible to configure passenger in the nginx.conf to use a different shell with which to spawn its processes? If so, how?
This is Phusion 4.0.14
Thanks!
Best Answer
When Phusion Passenger spawns an application, it does so by invoking the command
$SHELL -lc '/path-to-passenger-root/buildout/agents/SpawnPreparer /path-to-passenger-root/helper-scripts/rack-loader.rb <SOME ARGUMENTS>'
. It's described here: https://github.com/phusion/passenger/wiki/Debugging-application-startup-problems#the-spawning-process-explained. Here, $SHELL is the user's shell, as configured in the OS's user database (/etc/passwd). In your case, your user is setup with zsh as its shell. This is probably your OS's default setting.Your error message indicates that it cannot execute the file
passenger/buildout/agents/SpawnPreparer
. In other words, Phusion Passenger thinks that/path-to-passenger
equalspassenger
. This probably means that you set the incorrect value for thepassenger_root
directive, which dictates the proper value of/path-to-passenger
.