Phusion passenger-status:passenger_instance_registry_dir 的值是多少?
Phusion passenger-status: what value for passenger_instance_registry_dir?
我在 Ubuntu 14.04 上从源代码完成了 nginx 1.6.3 和 passenger 5.0.15 的新安装,以便在我的一台服务器上为我的 ROR 4.2 应用程序添加来自 AppNeta 的跟踪组件。 Nginx 和 passenger 运行 宁和服务页面。我正在获取服务器监控的跟踪数据。一切似乎都很好,
但是,当我 运行 "passenger-status"(作为 root)时,我得到以下信息:
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 部署; cap 在退出前显示了同样的错误。
Passenger is 运行ning(它在 ps
输出中并且正在提供页面)。我只需要告诉 passenger-status 在哪里可以找到当前的 运行ning 实例。 (这来自 Design and Architecture 文档。)因此,似乎设置此实例注册表目录值是必需的步骤。但价值是多少?
根据 Nginx Reference,默认值是 /tmp
和 /var/run/passenger-instreg
我在 /tmp 中找到了一个实例目录。所以,我尝试将 PASSENGER_INSTANCE_REGISTRY_DIR 设置为多个不同的值:
- /tmp
- /tmp/passenger.JxmCeiA(当前实例目录,但每次启动Nginx都会改变)
我什至尝试在 /run/passenger 中创建一个目录,在 nginx 配置文件中设置该值并重新启动 nginx。正在创建临时目录 ,但 passenger-status 仍然给出相同的消息。即使我使用 /opt/passenger-5.0.15/bin/passenger-status 脚本来确保我使用的是该脚本的最新版本。
原来的'location.ini' passenger 目录中有一些配置值,但是none 是实例注册目录,所以没有什么可以重用的。
有趣的是,/opt/passenger-5.0.15/lib/phusion_passenger/nginx/config_options.rb 文件没有 passenger_instance_registory_dir 的条目。它还有其他 nginx 配置选项,我希望它也有这个。
我已经尝试设置环境变量以及 Nginx passenger_instance_registry_dir
选项,但我一定是遗漏了一些我理解的东西,因为我似乎无法将 passenger-status
命令与当前 运行ning 实例。
如有任何帮助,我们将不胜感激。
这里是客作者
/tmp/passenger.JxmCeiA
是实例目录的示例。这确实随着每次启动而改变(因为它特定于一个实例)。
父目录(实例目录所在目录)为实例registry目录。因此,在您的情况下,正在使用的实例注册表目录是 /tmp。
我猜您的 Passenger 安装版本不匹配。过去我们已经多次更改实例目录的结构,每次我们这样做都会增加一个内部版本号,以表明它与以前的 Passenger 版本不兼容。你能仔细检查以下内容吗?
- Passenger 看起来 运行 是否正确?
- Nginx内部编译的是什么Passenger版本?
- 你的
passenger_root
设置了什么?是否匹配Nginx内部编译的Passenger版本?
- PATH 中第一个
passenger-status
的完整路径在哪里?它匹配 passenger_root
吗?
您似乎还混合了 Phusion Passenger APT 存储库和源代码压缩包安装。拥有多个安装通常不是一个好主意。尝试清理您的其他安装,以便您最终只安装一个。
还要检查您是否正确设置了 PASSENGER_INSTANCE_REGISTRY_DIR
环境变量。请注意,sudo nukes 环境变量,因此您需要像这样 运行 passenger-status:
# 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
.
第一步检查phusion passenger是否正确安装
sudo passenger-config validate-install
"if you see an ouput saying, 'Everything is looks good :-)'" 就可以了,不行的话需要重装phusion passenger,参考https://www.phusionpassenger.com/library/walkthroughs/start/
第二步检查phusion乘客记忆状态
sudo passenger-memory-stats
"if you see processes running, then that's good, if not you either have to start some passenger app, or install nginx or apache with extra library for them. For nginx you need nginx and the nginx-extras".
第三步取消注释nginx.conf文件中的passenger_root(对于ubuntu通常是/etc/nginx/nginx.conf)或者apache.conf 文件
重启 nginx 或 apache
sudo service nginx restart # (or systemctl restart nginx, for new version of linux such as ubuntu 15.04, CentOS7)
现在你可以 运行
passenger-status
错误现在应该消失了。您最有可能得到的输出是 "Phusion Passenger is currently not serving any applications."
如果其他人在使用 systemd 服务启动 Passenger 时遇到此问题,这可能是由于 systemd 的私有 /tmp
。通过在服务文件中添加 PrivateTmp=false
解决了问题。
我是 运行 Nginx integration mode, on Ubuntu 20.04 and I've installed it via apt from the official repos 的乘客。
对我有用的是将此添加到 /etc/nginx/conf.d/mod-http-passenger.conf
:
passenger_instance_registry_dir /tmp;
现在应该可以从命令行以 Capistrano 方式重新启动 passenger:
$ passenger-config restart-app <your_app's_root_path> --ignore-app-not-running
如果这有效,Capistrano 部署现在应该再次有效。
我在 Ubuntu 14.04 上从源代码完成了 nginx 1.6.3 和 passenger 5.0.15 的新安装,以便在我的一台服务器上为我的 ROR 4.2 应用程序添加来自 AppNeta 的跟踪组件。 Nginx 和 passenger 运行 宁和服务页面。我正在获取服务器监控的跟踪数据。一切似乎都很好,
但是,当我 运行 "passenger-status"(作为 root)时,我得到以下信息:
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 部署; cap 在退出前显示了同样的错误。
Passenger is 运行ning(它在 ps
输出中并且正在提供页面)。我只需要告诉 passenger-status 在哪里可以找到当前的 运行ning 实例。 (这来自 Design and Architecture 文档。)因此,似乎设置此实例注册表目录值是必需的步骤。但价值是多少?
根据 Nginx Reference,默认值是 /tmp
和 /var/run/passenger-instreg
我在 /tmp 中找到了一个实例目录。所以,我尝试将 PASSENGER_INSTANCE_REGISTRY_DIR 设置为多个不同的值:
- /tmp
- /tmp/passenger.JxmCeiA(当前实例目录,但每次启动Nginx都会改变)
我什至尝试在 /run/passenger 中创建一个目录,在 nginx 配置文件中设置该值并重新启动 nginx。正在创建临时目录 ,但 passenger-status 仍然给出相同的消息。即使我使用 /opt/passenger-5.0.15/bin/passenger-status 脚本来确保我使用的是该脚本的最新版本。
原来的'location.ini' passenger 目录中有一些配置值,但是none 是实例注册目录,所以没有什么可以重用的。
有趣的是,/opt/passenger-5.0.15/lib/phusion_passenger/nginx/config_options.rb 文件没有 passenger_instance_registory_dir 的条目。它还有其他 nginx 配置选项,我希望它也有这个。
我已经尝试设置环境变量以及 Nginx passenger_instance_registry_dir
选项,但我一定是遗漏了一些我理解的东西,因为我似乎无法将 passenger-status
命令与当前 运行ning 实例。
如有任何帮助,我们将不胜感激。
这里是客作者
/tmp/passenger.JxmCeiA
是实例目录的示例。这确实随着每次启动而改变(因为它特定于一个实例)。
父目录(实例目录所在目录)为实例registry目录。因此,在您的情况下,正在使用的实例注册表目录是 /tmp。
我猜您的 Passenger 安装版本不匹配。过去我们已经多次更改实例目录的结构,每次我们这样做都会增加一个内部版本号,以表明它与以前的 Passenger 版本不兼容。你能仔细检查以下内容吗?
- Passenger 看起来 运行 是否正确?
- Nginx内部编译的是什么Passenger版本?
- 你的
passenger_root
设置了什么?是否匹配Nginx内部编译的Passenger版本? - PATH 中第一个
passenger-status
的完整路径在哪里?它匹配passenger_root
吗?
您似乎还混合了 Phusion Passenger APT 存储库和源代码压缩包安装。拥有多个安装通常不是一个好主意。尝试清理您的其他安装,以便您最终只安装一个。
还要检查您是否正确设置了 PASSENGER_INSTANCE_REGISTRY_DIR
环境变量。请注意,sudo nukes 环境变量,因此您需要像这样 运行 passenger-status:
# 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
.
第一步检查phusion passenger是否正确安装
sudo passenger-config validate-install
"if you see an ouput saying, 'Everything is looks good :-)'" 就可以了,不行的话需要重装phusion passenger,参考https://www.phusionpassenger.com/library/walkthroughs/start/
第二步检查phusion乘客记忆状态
sudo passenger-memory-stats
"if you see processes running, then that's good, if not you either have to start some passenger app, or install nginx or apache with extra library for them. For nginx you need nginx and the nginx-extras".
第三步取消注释nginx.conf文件中的passenger_root(对于ubuntu通常是/etc/nginx/nginx.conf)或者apache.conf 文件
重启 nginx 或 apache
sudo service nginx restart # (or systemctl restart nginx, for new version of linux such as ubuntu 15.04, CentOS7)
现在你可以 运行
passenger-status
错误现在应该消失了。您最有可能得到的输出是 "Phusion Passenger is currently not serving any applications."
如果其他人在使用 systemd 服务启动 Passenger 时遇到此问题,这可能是由于 systemd 的私有 /tmp
。通过在服务文件中添加 PrivateTmp=false
解决了问题。
我是 运行 Nginx integration mode, on Ubuntu 20.04 and I've installed it via apt from the official repos 的乘客。
对我有用的是将此添加到 /etc/nginx/conf.d/mod-http-passenger.conf
:
passenger_instance_registry_dir /tmp;
现在应该可以从命令行以 Capistrano 方式重新启动 passenger:
$ passenger-config restart-app <your_app's_root_path> --ignore-app-not-running
如果这有效,Capistrano 部署现在应该再次有效。