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

2

4

While i'm deploying my rails application through capistrano to my CentOS server all the time i have been receiving this error:

*** 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.

On my server i have apache and passenger 5.0.30 Firstly i was looking on others answers here on stack: Link to one of these topics. Unfortunately nothing hasn't helped me. I tried to set the env path and others settings from apache conf as well. Any idea what should i change in order to deploy my rails app? Where is the full path to the first passenger-status in PATH? Does it match passenger_root? Below are my logs:

$ 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

My apache config file:

    <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>

And my env path:

   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

For sure i'm making something wrong. Thanks for every advice.

Characterize answered 15/11, 2016 at 13:29 Comment(0)
T
2

The problem seems to be systemd private temp feature, you can disable that for 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 no longer use /tmp for status information so it should work out of box even on private temps.

Tesstessa answered 8/3, 2018 at 13:7 Comment(0)
C
2

Finally i resolved my issue. I have done two things.

Firstly i created new temp folder in my home directory. Then inside Apache config file i added

PassengerInstanceRegistryDir /home/userr/instancetemp

Then i pushed this to my env path with

echo 'PASSENGER_INSTANCE_REGISTRY_DIR=/home/userr/instancetemp' >> ~/.bash_profile

I think this is enough but i added also this path to my capistrano config

set :default_env, { 
  "PASSENGER_INSTANCE_REGISTRY_DIR" => "/home/userr/instancetemp"
}
Characterize answered 17/11, 2016 at 13:29 Comment(0)
T
2

The problem seems to be systemd private temp feature, you can disable that for 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 no longer use /tmp for status information so it should work out of box even on private temps.

Tesstessa answered 8/3, 2018 at 13:7 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.