ruby-on-rails - Phusion 乘客状态 : what value for passenger_instance_registry_dir?

标签 ruby-on-rails nginx passenger ubuntu-14.04

我已经从源代码在 Ubuntu 14.04 上完成了 nginx 1.6.3 和乘客 5.0.15 的新安装,以便在我的一台服务器上为我的 ROR 4.2 应用程序添加来自 AppNeta 的跟踪组件。 Nginx 和乘客正在运行和服务页面。我正在获取服务器监控的跟踪数据。一切似乎都很好

但是,当我(以 root 身份)运行“passenger-status”时,我得到以下信息:

ERROR: Phusion Passenger doesn't seem to be running. If you are sure that it is running, then the causes of this problem could be:

  1. You customized the instance registry directory using Apache's PassengerInstanceRegistryDir option, Nginx's passenger_instance_registry_dir option, or Phusion Passenger Standalone's --instance-registry-dir command line argument. If so, please set the environment variable PASSENGER_INSTANCE_REGISTRY_DIR to that directory and run passenger-status again.
  2. The instance directory has been removed by an operating system background service. Please set a different instance registry directory using Apache's PassengerInstanceRegistryDir option, Nginx's passenger_instance_registry_dir option, or Phusion Passenger Standalone's --instance-registry-dir command line argument.


问题在于它似乎阻碍了 capistrano 的部署。在退出之前,上限会显示相同的错误。

乘客正在运行(它在 ps 输出中,并且正在提供页面)。我只需要告诉乘客状态在哪里可以找到当前正在运行的实例。 (这来自 Design and Architecture 文档。)因此,设置此实例注册表目录值似乎是必需的步骤。但值(value)是多少?

根据Nginx Reference , 默认值为 /tmp/var/run/passenger-instreg我在/tmp 中找到了一个实例目录。因此,我尝试将 PASSENGER_INSTANCE_REGISTRY_DIR 设置为多个不同的值:
  • /tmp
  • /tmp/passenger.JxmCeiA(当前实例目录,但每次启动 Nginx 都会改变)

  • 我什至尝试在/run/passenger 创建一个目录,在 nginx 配置文件中设置该值并重新启动 nginx。正在创建临时目录,但乘客状态仍然给出相同的消息。即使我使用/opt/passenger-5.0.15/bin/passenger-status 脚本来确保我使用的是该脚本的最新版本。

    原始的“location.ini”目录中有一些配置值用于乘客,但没有一个是实例注册表目录,因此没有什么可重用的。

    有趣的是,/opt/passenger-5.0.15/lib/phusion_passenger/nginx/config_options.rb 文件没有passenger_instance_registory_dir 的条目。它还有其他 nginx 配置选项,我本来希望它也有这个。

    我试过设置环境变量以及 Nginx passenger_instance_registry_dir选项,但我的理解中一定遗漏了一些东西,因为我似乎无法连接 passenger-status命令与当前正在运行的实例。

    任何帮助将不胜感激。

    最佳答案

    乘客作者在这里。
    /tmp/passenger.JxmCeiA是实例目录的示例。这确实随着每次启动而改变(因为它特定于一个实例)。

    父目录(实例目录所在的目录)为实例注册表 目录。因此,在您的情况下,正在使用的实例注册表目录是/tmp。

    我猜你有某种乘客安装版本不匹配。过去我们曾多次更改实例目录的结构,每次这样做时,我们都会增加一个内部版本号,以表明它与以前的乘客版本不兼容。您可以仔细检查以下内容吗?

  • 乘客似乎在其他方面运行正常吗?
  • 什么乘客版本是内编译 Nginx?
  • 你是什​​么passenger_root设置?它是否与 Nginx 内部编译的乘客版本匹配?
  • 第一个 passenger-status 的完整路径在哪里?在路径中?是否匹配 passenger_root ?

  • 您似乎还将 Phusion Passenger APT 存储库与源 tarball 安装混合在一起。周围有多个安装通常是一个坏主意。尝试清理您的其他安装,以便您最终只得到一个。

    还要检查您是否正在设置 PASSENGER_INSTANCE_REGISTRY_DIR环境变量正确。请注意 sudo nukes 环境变量,因此您需要像这样运行乘客状态:
    # Correct:
    sudo env PASSENGER_INSTANCE_REGISTRY_DIR=/tmp passenger-status
    
    # Incorrect, sudo nukes environment variables
    export PASSENGER_INSTANCE_REGISTRY_DIR=/tmp
    sudo passenger-status
    

    关于 lib/phusion_passenger/nginx/config_options.rb:该文件主要列出了每个服务器和每个位置的配置选项。主上下文中的许多配置选项尚未移植到 config_options.rb系统,或者不可能,因为它们需要自定义注意。目前,passenger_instance_registry_dir在 ext/common/nginx/Configuration.c 中实现。随着我们继续清理和重构代码库,此选项最终可能会移至 config_options.rb。 .

    关于ruby-on-rails - Phusion 乘客状态 : what value for passenger_instance_registry_dir?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31761542/

    相关文章:

    apache - 您知道使用 Apache 而不是 Nginx 的任何理由吗?

    ruby-on-rails - 如何从Nginx/Passenger中删除 "X-Runtime" header ?

    ruby-on-rails - 如何使用公寓 gem 处理电子邮件中的网址

    javascript - 使用 Ajax 切换按钮而不刷新

    jquery - 如何防止 Rails 中的 Enter 键提交

    docker-compose gitlab 使用 Nginx 但 ssh 失败

    ruby - 需要双服务器配置建议

    mysql - 静态页面中的名称错误#home

    ruby-on-rails - 到 View 的路由在生产中中断

    ruby-on-rails - 如何使用 Rails 3 获取请求的目标 Controller 和操作?