【发布时间】:2015-10-24 00:57:52
【问题描述】:
我已经从源代码在 Ubuntu 14.04 上完成了 nginx 1.6.3 和乘客 5.0.15 的新安装,以便在我的一台服务器上为我的 ROR 4.2 应用程序添加来自 AppNeta 的跟踪组件。 Nginx 和乘客正在运行和服务页面。我正在获取服务器监控的跟踪数据。一切似乎都很好,
但是,当我(以 root 身份)运行“passenger-status”时,我得到以下信息:
错误:Phusion Passenger 似乎没有运行。如果您确定它正在运行,那么导致此问题的原因可能是:
- 您使用Apache 的PassengerInstanceRegistryDir 选项、Nginx 的passenger_instance_registry_dir 选项或Phusion Passenger Standalone 的--instance-registry-dir 命令行参数自定义了实例注册表目录。如果是这样,请将环境变量 PASSENGER_INSTANCE_REGISTRY_DIR 设置为该目录并再次运行乘客状态。
- 实例目录已被操作系统后台服务删除。请使用 Apache 的PassengerInstanceRegistryDir 选项、Nginx 的passenger_instance_registry_dir 选项或Phusion Passenger Standalone 的--instance-registry-dir 命令行参数设置不同的实例注册表目录。
问题在于它似乎阻止了 capistrano 的部署;在退出之前,cap 会显示同样的错误。
乘客正在运行(它在ps 输出中并且正在提供页面)。我只需要告诉乘客状态在哪里可以找到当前正在运行的实例。 (这来自Design and Architecture 文档。)因此,设置此实例注册表目录值似乎是必需的步骤。但值是多少?
根据Nginx Reference,默认是/tmp和/var/run/passenger-instreg,我在/tmp中找到了一个实例目录。因此,我尝试将 PASSENGER_INSTANCE_REGISTRY_DIR 设置为多个不同的值:
- /tmp
- /tmp/passenger.JxmCeiA(当前实例目录,但每次启动Nginx都会改变)
我什至尝试在 /run/passenger 创建一个目录,在 nginx 配置文件中设置该值并重新启动 nginx。临时目录 is 正在创建中,但乘客状态仍然给出相同的消息。即使我使用 /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 命令与当前运行的实例连接起来。
任何帮助将不胜感激。
【问题讨论】:
-
如果错误消息包含正确和错误的路径,或者类似的东西,那就太好了。
标签: ruby-on-rails nginx passenger ubuntu-14.04