9
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

CentOS 7 で Phusion Passenger の passenger-status を実行するとエラーとなる

知らなかった。

  • CentOS Linux release 7.1.1503 (Core)
  • Passenger 5.0.21

以下のように passenger-status を実行するとエラーとなる。

~# 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.

特に設定をいじったりしていない。Passenger のドキュメントを確認する。

The default value for this option is as follows:

  • If you are on Red Hat and CentOS, and installed Passenger through the RPMs provided by Phusion, then the default value is /var/run/passenger-instreg.
  • Otherwise, the default value is the value of the \$TMPDIR environment variable. Or, if \$TMPDIR is not set, /tmp.

gem install passenger したものなので上記の後者。
探してみるが関係していそうなものが無い。

~# echo $TMPDIR

~# ls /tmp
ks-script-tlgcPw  systemd-private-mBNl7v  yum.log

ここで強引に探してみる。それらしきものが見つかる。

~# find / -iname '*passenger*'
... 省略 ...
/tmp/systemd-private-mBNl7v/tmp/passenger.aFePViS
... 省略 ...

指定してみると passenger-status が動く。

~# PASSENGER_INSTANCE_REGISTRY_DIR=/tmp/systemd-private-mBNl7v/tmp passenger-status 
Version : 5.0.21
Date    : 2015-11-30 23:36:48 +0900
Instance: 2Wqc3QMb (Apache/2.4.6 (CentOS) Phusion_Passenger/5.0.21)

----------- General information -----------
Max pool size : 6
App groups    : 1
Processes     : 1
Requests in top-level queue : 0

----------- Application groups -----------
/var/lib/redmine:
  App root: /var/lib/redmine
  Requests in queue: 0
  * PID: 2473    Sessions: 0       Processed: 1       Uptime: 5m 22s
    CPU: 0%      Memory  : 125M    Last used: 5m 22s ago

では systemd-private-xxxxxx とは何か。ググる。

Because systemd is configured to give nginx a private /tmp. If you must use the system /tmp instead for some reason then you will need to modify the .service file to read "PrivateTmp=no".

Another very simple but powerful configuration switch is PrivateTmp=:

If true, sets up a new file system namespace for the executed processes and mounts private /tmp and /var/tmp directories inside it that is not shared by processes outside of the namespace.

Passenger は Apache HTTP Server (yum でインストールしたやつ) が使っている。
Apache の PrivateTmp の設定値を確認する。
設定ファイルは下記で分かった。

~# systemctl status httpd
httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
... 省略 ...

下記のように true だった。

~# cat /usr/lib/systemd/system/httpd.service 
... 省略 ...
PrivateTmp=true
... 省略 ...

正直よくわからない。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
9
Help us understand the problem. What are the problem?