CentOS ***错误:Phusion Passenger似乎没有运行

时间:2016-11-15 13:29:16

标签: ruby-on-rails apache passenger centos7

虽然我一直通过capistrano将我的rails应用程序部署到我的CentOS服务器,但我一直收到这个错误:

  

***错误:Phusion Passenger似乎没有运行。如果您确定它正在运行,那么此问题的原因可能是一个   的:

     
      
  1. 您使用Apache自定义了实例注册表目录   PassengerInstanceRegistryDir选项,Nginx' s   passenger_instance_registry_dir选项,或Phusion Passenger Standalone' s   --instance-registry-dir命令行参数。如果是这样,请设置   环境变量PASSENGER_INSTANCE_REGISTRY_DIR到该目录   并再次运行此命令。
  2.   
  3. 实例目录已被操作系统后台删除   服务。请使用Apache设置不同的实例注册表目录   PassengerInstanceRegistryDir选项,Nginx的passenger_instance_registry_dir   选项,或Phusion Passenger Standalone' s --instance-registry-dir命令   line argument。
  4.   

在我的服务器上我有apache和乘客5.0.30 首先,我在堆栈上查看其他答案: Link to one of these topics。 不幸的是,没有什么能帮助我。我试图从apache conf设置env路径和其他设置。 知道我应该更改什么才能部署我的rails应用程序? PATH中第一个乘客身份的完整路径在哪里?它与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

确定我犯了错误。感谢您的一切建议。

2 个答案:

答案 0 :(得分:1)

最后我解决了我的问题。 我做了两件事。

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

PassengerInstanceRegistryDir /home/userr/instancetemp

然后我用

把它推到了我的环路
echo 'PASSENGER_INSTANCE_REGISTRY_DIR=/home/userr/instancetemp' >> ~/.bash_profile

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

set :default_env, { 
  "PASSENGER_INSTANCE_REGISTRY_DIR" => "/home/t.panek/passenger_temp"
}

答案 1 :(得分:0)

问题似乎是 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作为状态信息,因此即使在私人临时工具上它也应该开箱即用。