
Hoffentlich ist dies die richtige Site, um diese Frage zu stellen.
Ich versuche, einen Webservice mit NginX und Phusion Passenger auf einer Ruby Sinatra-Anwendung einzurichten. Das Problem ist, dass ich beim Versuch, den Server zu starten und die Site zu testen, die folgende Fehlermeldung erhalte:
zsh:1: no such file or directory: passenger/buildout/agents/SpawnPreparer
Jetzt konnte ich feststellen, dass SpawnPreparer
aufgerufen wird zsh
, obwohl ich nicht sicher bin, warum. Ich verwende es nicht einmal zsh
und habe es auch nicht verwendet, als ich den Server erstellt habe. Trotzdem würde ich gerne wissen, ob es möglich ist, Passenger in nginx.conf so zu konfigurieren, dass eine andere Shell zum Starten seiner Prozesse verwendet wird. Wenn ja, wie?
Dies ist Phusion 4.0.14
Danke!
Antwort1
Wenn Phusion Passenger eine Anwendung startet, geschieht dies durch Aufruf des Befehls $SHELL -lc '/path-to-passenger-root/buildout/agents/SpawnPreparer /path-to-passenger-root/helper-scripts/rack-loader.rb <SOME ARGUMENTS>'
. Dies wird hier beschrieben:https://github.com/phusion/passenger/wiki/Debugging-application-startup-problems#the-spawning-process-explained. Hier ist $SHELL die Shell des Benutzers, wie sie in der Benutzerdatenbank des Betriebssystems (/etc/passwd) konfiguriert ist. In Ihrem Fall ist Ihr Benutzer mit zsh als Shell eingerichtet. Dies ist wahrscheinlich die Standardeinstellung Ihres Betriebssystems.
Ihre Fehlermeldung besagt, dass die Datei nicht ausgeführt werden kann passenger/buildout/agents/SpawnPreparer
. Mit anderen Worten: Phusion Passenger denkt, dass /path-to-passenger
gleich ist passenger
. Das bedeutet wahrscheinlich, dass Sie den falschen Wert für die passenger_root
Direktive festgelegt haben, die den richtigen Wert von vorgibt /path-to-passenger
.