我在Ubuntu 10.04上使用Apache2完成了Phusion Passenger设置。每当我重新启动Apache服务器时,我收到以下错误消息,并且Rails应用程序未运行。
[error] *** Passenger could not be initialized because of this error: Unable to start the Phusion Passenger watchdog because its executable (/usr/lib/phusion-passenger/agents/PassengerWatchdog) does not exist. This probably means that your Phusion Passenger installation is broken or incomplete, or that your 'PassengerRoot' directive is set to the wrong value. Please reinstall Phusion Passenger or fix your 'PassengerRoot' directive, whichever is applicable.
答案 0 :(得分:61)
我在从源代码编译时遇到了同样的问题,但它是间歇性的,这真的令人沮丧(我认为它必须w / Rails环境)。我们无法使用passenger-install-apache2-module / passenger-install-nginx-module脚本,因为我们需要一个自定义的nginx安装。
我最后通过转到passenger-config --root
,然后运行rake nginx
来解决问题。
2016年2月更新(乘客作者):
官方支持的编译PassengerAgent的方法(不用编译Nginx,就像passenger-install-nginx-module那样)是用这个命令:
passenger-config compile-agent
Passenger 5.0.26及更高版本将自动检测此StackOverflow问题中描述的错误,并自动建议运行上述命令。
答案 1 :(得分:9)
我自己刚刚遇到这个错误并且很难找到一个好的答案,所以这是我的写作。 在我的设置中,我要去的是Ubuntu,Apache2,最新的Passenger和Rails 2.3。
gem -v
是正确的,如果错误,您将完成所有这两次sudo gem install passenger
cd /usr/lib
wget http://rubyforge.org/frs/download.php/76005/passenger-3.0.12.tar.gz
tar zxvf passenger-3.0.12.tar.gz
cd passenger-3.0.12
./bin/passenger-install-apache2-module
export PATH=/var/lib/gems/1.8/bin:$PATH
添加到〜/ .bashrc ln -s /usr/lib/passenger-3.0.12 /usr/share/phusion-passenger
#=>这解决了与PassengerWatchdog有关的伤害世界。注意:PassengerWatchdog没有使用apt-get,这就是我们抓住二进制文件的原因。ln -s /usr/lib/passenger-3.0.12 /usr/lib/phusion-passenger
#=>类似的问题。在最后一天半的时候,这是从记忆中解脱出来的,当我不得不重新审视时,我会整理一下。
答案 2 :(得分:7)
尝试通过运行脚本passenger-install-apache2-module安装乘客模块。 我有同样的问题,但在nginx;我通过gem安装了乘客,然后用乘客模块手动重新编译了nginx - 这导致了您所描述的错误。运行passenger-install-nginx-module后,这样的错误就消失了。
答案 3 :(得分:0)
自从我重新启动nginx以来已经有一段时间了,与此同时,乘客的路径发生了变化。我查看nginx.conf
以查看passenger_root
设置的内容,并意识到这是旧值:
http {
passenger_root /home/nginx/rails_app/myapp/shared/bundle/ruby/1.9.1/gems/passenger-enterprise-server-3.0.17;
通常有两个地方需要改变:
server {
listen 8888;
root /home/nginx/rails_app/myapp/current/public;
我重新启动了nginx,错误消失了。
答案 4 :(得分:-2)
我在Nginx-Server上遇到了同样的问题
就我而言,由于gem更新,passenger_root
目录不正确。
[1]在Linux上,我使用以下命令搜索了乘客目录:
find / -name PassengerWatchdog
[2]现在我将'passenger_root'值更改为此目录。
[3]然后重启服务器。
suvankar,也许你应该改变你的乘客路径。