如何修复 NginX/Phusion/Passenger “zsh:1:没有这样的文件或目录:passenger/buildout/agents/SpawnPreparer”

如何修复 NginX/Phusion/Passenger “zsh:1:没有这样的文件或目录:passenger/buildout/agents/SpawnPreparer”

希望这是提出该问题的正确网站。

我有一个 web 服务,我正尝试使用 NginX 和 Phusion Passenger 设置一个 Ruby Sinatra 应用程序。问题是,当我尝试启动服务器并测试网站时,出现以下错误:

zsh:1: no such file or directory: passenger/buildout/agents/SpawnPreparer

现在,我已经能够确定正在SpawnPreparer调用zsh,尽管我不确定为什么。我甚至不使用zsh,而且在构建服务器时也没有使用它。尽管如此,我想知道的是,是否可以在 nginx.conf 中配置 Passenger,以使用不同的 shell 来生成其进程?如果可以,怎么做?

这是 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/Debugging-application-startup-problems#the-spawning-process-explained。此处,$SHELL 是用户的 shell,如在操作系统的用户数据库 (/etc/passwd) 中配置的一样。就您而言,您的用户使用 zsh 作为其 shell。这可能是您的操作系统的默认设置。

您的错误消息表明它无法执行文件passenger/buildout/agents/SpawnPreparer。换句话说,Phusion Passenger 认为/path-to-passenger等于passenger。这可能意味着您为passenger_root指令设置了错误的值,该指令决定了正确的值/path-to-passenger

相关内容