无法启动 Phusion 乘客看门狗?

Posted

技术标签:

【中文标题】无法启动 Phusion 乘客看门狗?【英文标题】:Unable to start the Phusion Passenger watchdog? 【发布时间】:2012-03-14 15:53:24 【问题描述】:

我在 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.

【问题讨论】:

我刚刚在 apache 2.4、passenger 4.0.58 上遇到了同样的问题。经过一番深入研究,结果发现我的 EC2 微型实例没有足够的内存来编译 apache 乘客模块——它因内存不足错误而失败。升级到下一个实例大小解决了这个问题。 只是为了扩展 Shyam 的问题。我的乘客编译失败了一次,在后续运行中成功,但乘客安装处于错误状态(后续成功运行没有返回并更正原始错误编译)。我采取了不同的路线...创建了一个新的微实例,添加了一些交换,然后看到 Passenger 编译并成功启动。 【参考方案1】:

我在从源代码编译时遇到了同样的问题,但它是断断续续的,这真的很令人沮丧(我认为它必须与 Rails 环境有关)。我们无法使用passenger-install-apache2-module/passenger-install-nginx-module 脚本,因为我们需要自定义的nginx 安装。

我终于解决了这个问题,不管passenger-config --root是什么,然后运行:rake nginx

2016 年 2 月更新(乘客作者):

官方支持的编译PassengerAgent的方法(不需要像passenger-install-nginx-module那样编译Nginx)是使用这个命令:

passenger-config compile-agent

Passenger 5.0.26 及更高版本会自动检测此 *** 问题中描述的错误,并会自动建议运行上述命令。

【讨论】:

您可能必须切换到您的“root”用户帐户,或者您在设置passenger-install-nginx-module时使用的任何帐户。 "passenger-config --root" 指向当前项目的 Gemfile.lock 指定的乘客 gem 的版本。这也许可以解释为什么它对您来说是断断续续的,因为不同的 Rails 项目可能使用不同版本的 Passenger。 如果编译失败并出现有关 curl 的错误,请运行 apt-get install libcurl4-openssl-dev (source)。 passenger-config --root 的路径添加到我的 nginx.conf 对我很有帮助。【参考方案2】:

我自己也遇到了这个错误,很难找到一个好的答案,所以这是我的文章。 在我的设置中,我将使用 Ubuntu、Apache2、最新的 Passenger 和 Rails 2.3。

    安装 Ruby 和 Rubygems NB:确保(非常)确保您的 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-moduleexport 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 # => 类似问题。

这是前半天折腾下来的记忆,等我再看一遍的时候再整理一下。

【讨论】:

【参考方案3】:

尝试通过运行脚本 Passenger-install-apache2-module 来安装乘客模块。 我有同样的问题,但在 nginx 上;我通过 gem 安装了乘客,然后使用乘客模块手动重新编译了 nginx——这导致了你描述的错误。运行passenger-install-nginx-module后,这个错误就消失了。

【讨论】:

【参考方案4】:

自从我重新启动 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,错误消失了。

【讨论】:

【参考方案5】:

我在我的 Nginx 服务器上遇到了同样的问题。 在我的例子中,passenger_root 目录不正确,因为 gem 更新。

[1] 在 Linux 上,我使用以下命令搜索乘客目录:

find / -name PassengerWatchdog

[2] 现在我将我的“passenger_root”值更改为这个目录。 [3] 并重启服务器。

suvankar,也许你也应该改变你的Passenger Path。

【讨论】:

以上是关于无法启动 Phusion 乘客看门狗?的主要内容,如果未能解决你的问题,请参考以下文章

iOS-watchdog看门狗机制

看门狗驱动程序

单片机的看门狗怎么用

[看门狗]内部看门狗和外部看门狗

STC单片机启动看门狗定时器介绍和使用

Iphone,我怎样才能避免看门狗杀死我的应用程序需要很长时间才能启动?