CentOS *** ERROR: Phusion Passenger doesn't seem to be running

CentOS *** ERROR: Phusion Passenger doesn't seem to be running

当我通过 capistrano 将我的 rails 应用程序部署到我的 CentOS 服务器时,我一直收到此错误:

*** 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 one of:

  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 this command 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.

在我的服务器上,我有 apache 和 passenger 5.0.30 首先,我在堆栈上查看其他答案: 。 不幸的是,没有什么能帮助我。我也尝试从 apache conf 设置 env 路径和其他设置。 知道我应该更改什么以部署我的 rails 应用程序吗? PATH 中第一个 passenger-status 的完整路径在哪里?它匹配 passenger_root 吗? 以下是我的日志:

$ passenger-config validate-install


> What would you like to validate? Use <space> to select. If the menu
> doesn't display correctly, press '!'
> 
>    ⬢  Passenger itself  ‣ ⬢  Apache
> 
> -------------------------------------------------------------------------
> 
> Checking whether there are multiple Apache installations... Only a
> single installation detected. This is good.
> 
> -------------------------------------------------------------------------
> 
>  * Checking whether this Passenger install is in PATH... ✓  * Checking
> whether there are no other Passenger installations... ✓  * Checking
> whether Apache is installed... ✓  * Checking whether the Passenger
> module is correctly configured in Apache... ✓
> 
> Everything looks good. :-)




$ rvmsudo passenger-memory-stats

Version: 5.0.30
Date   : 2016-11-15 13:43:44 +0100

---------- Apache processes ----------
PID    PPID   VMSize    Private  Name
--------------------------------------
25188  1      476.6 MB  1.5 MB   /usr/sbin/httpd -DFOREGROUND
25220  25188  270.4 MB  0.5 MB   /usr/sbin/httpd -DFOREGROUND
25246  25188  478.6 MB  0.2 MB   /usr/sbin/httpd -DFOREGROUND
25247  25188  478.6 MB  0.2 MB   /usr/sbin/httpd -DFOREGROUND
25248  25188  478.6 MB  0.2 MB   /usr/sbin/httpd -DFOREGROUND
25249  25188  478.6 MB  0.2 MB   /usr/sbin/httpd -DFOREGROUND
25250  25188  478.6 MB  0.2 MB   /usr/sbin/httpd -DFOREGROUND
### Processes: 7
### Total private dirty RSS: 3.08 MB


-------- Nginx processes --------

### Processes: 0
### Total private dirty RSS: 0.00 MB


----- Passenger processes -----
PID    VMSize    Private  Name
-------------------------------
25222  421.0 MB  0.9 MB   Passenger watchdog
25225  772.6 MB  1.5 MB   Passenger core
25234  431.3 MB  1.0 MB   Passenger ust-router
### Processes: 3
### Total private dirty RSS: 3.39 MB

我的 apache 配置文件:

    <VirtualHost *:80>
    ServerName www.app.com
    ServerAdmin admin

    DocumentRoot "/srv/www/app_name/current/public"

LoadModule passenger_module /home/userr/.rvm/gems/ruby-2.2.5/gems/passenger-5.0.30/buildout/apache2/mod_passenger.so

#<IfModule mod_passenger.c>
#    PassengerRuby /usr/local/rvm/gems/ruby-2.2.5
#    PassengerRoot /usr/local/rvm/gems/ruby-2.2.5/gems/passenger-5.0.30
#    PassengerDefaultRuby /usr/local/rvm/gems/ruby-2.2.5/wrappers/ruby
#    PassengerInstanceRegistryDir /tmp
#</IfModule>

<IfModule mod_passenger.c>
        PassengerRoot /home/userr/.rvm/gems/ruby-2.2.5/gems/passenger-5.0.30
        PassengerDefaultRuby /home/userr/.rvm/gems/ruby-2.2.5/wrappers/ruby
        PassengerInstanceRegistryDir /tmp
</IfModule>

    Options -Indexes -FollowSymLinks -MultiViews

    LogLevel warn
    ErrorLog logs/www.app.com-error.log
    TransferLog logs/www.app.com-access.log
    CustomLog logs/www.app.cp,.log combined

<Directory /srv/www/app_name/current/public>
   AddDefaultCharset UTF-8

   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny>
       Require all granted
     </RequireAny>
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from All
   </IfModule>
</Directory>

</VirtualHost>

我的环境路径:

   env file:
    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    LOGNAME=root
    USER=root
    USERNAME=root
    HOME=/root
    SUDO_COMMAND=/bin/env PASSENGER_INSTANCE_REGISTRY_DIR=/tmp
    SUDO_USER=userr
    SUDO_UID=1001
    SUDO_GID=100
    PASSENGER_INSTANCE_REGISTRY_DIR=/tmp

我肯定做错了什么。谢谢你的每一个建议。

我终于解决了我的问题。 我做了两件事。

首先,我在主目录中创建了新的临时文件夹。然后在 Apache 配置文件中我添加了

PassengerInstanceRegistryDir /home/userr/instancetemp

然后我用

将它推送到我的环境路径
echo 'PASSENGER_INSTANCE_REGISTRY_DIR=/home/userr/instancetemp' >> ~/.bash_profile

我认为这已经足够了,但我还在我的 capistrano 配置中添加了这条路径

set :default_env, { 
  "PASSENGER_INSTANCE_REGISTRY_DIR" => "/home/userr/instancetemp"
}

问题似乎是 systemd 私有临时功能,您可以为 httpd 禁用它:

mkdir /etc/systemd/system/httpd.service.d
echo "[Service]" >  /etc/systemd/system/httpd.service.d/nopt.conf
echo "PrivateTmp=false" >> /etc/systemd/system/httpd.service.d/nopt.conf
systemctl daemon-reload
systemctl restart httpd

Passenger 5.0 不再使用 /tmp 状态信息,因此即使在私人临时工中也应该开箱即用。