我已经从源代码在 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:
- 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.
- 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 设置为多个不同的值:我什至尝试在/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。
我猜你有某种乘客安装版本不匹配。过去我们曾多次更改实例目录的结构,每次这样做时,我们都会增加一个内部版本号,以表明它与以前的乘客版本不兼容。您可以仔细检查以下内容吗?
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/