希望这是提出这个问题的正确网站。
我有一个网络服务,我正在尝试使用 NginX 和 Phusion Passenger 来设置一个 Ruby Sinatra 应用程序。问题是当我尝试启动服务器并测试站点时,我收到以下错误:
zsh:1: no such file or directory: passenger/buildout/agents/SpawnPreparer
现在,我已经能够确定那SpawnPreparer
是 call zsh
,虽然,我不知道为什么。我什zsh
至不使用,并且在构建服务器时也没有使用它。不过,我想知道的是是否可以在 nginx.conf 中配置乘客以使用不同的 shell 来生成其进程?如果是这样,怎么做?
这是 Phusion 4.0.14
谢谢!
当 Phusion Passenger 生成一个应用程序时,它通过调用 command 来实现
$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 作为其外壳。这可能是您操作系统的默认设置。您的错误消息表明它无法执行该文件
passenger/buildout/agents/SpawnPreparer
。换句话说,Phusion Passenger 认为/path-to-passenger
等于passenger
。这可能意味着您为passenger_root
指令设置了不正确的值,该值指示/path-to-passenger
.