ruby-on-rails - 使用Passenger 和Apache : Unexpected error in mod_passenger: Cannot connect to Unix socket Permission denied (errno=13) 部署Rails 时出错

标签 ruby-on-rails apache centos passenger

我一直在尝试通过在 CentOS 7 上使用 Phusion Passenger 和 Apache 来部署我的 Rails 应用程序。
我正在关注 tutorial可在 Phusion Passenger 网站上找到,但我被卡住了。

当我启动 Apache 并使用浏览器访问应用程序时,我得到:500 内部服务器错误。
在/etc/httpd/logs/error_log 的错误日志文件中发现以下错误:

[ 2017-03-15 22:57:15.5385 18290/7f4c6eb61880 apa/Hooks.cpp:690 ]: Unexpected error in mod_passenger: Cannot connect to Unix socket '/tmp/passenger.8zZ83f3/agents.s/core': Permission denied (errno=13)
  Backtrace:
     in 'int Passenger::connectToServer(const Passenger::StaticString&, const char*, unsigned int)' (IOUtils.cpp:459)
     in 'Passenger::FileDescriptor Hooks::connectToCore()' (Hooks.cpp:273)
     in 'int Hooks::handleRequest(request_rec*)' (Hooks.cpp:561)

到目前为止,我尝试过:
  • 禁用 SELinux:设置 SELINUX=disabled(在/etc/sysconfig/selinux 中)
  • 添加'umask 0022'(甚至'umask u=rwx,g=rx,o=rx')到/etc/sysconfig/httpd
  • 为/tmp 文件夹分配 755 个权限
  • 将PassengerInstanceRegistryDir 更改为我的用户主目录下的不同文件夹(并分配755 权限)

  • 但这些似乎都不起作用。
    我正在使用 Phusion Passenger 5.1.2 和 Apache 2.4.6。

    另外,这就是我通过运行得到的
    $ sudo /usr/bin/passenger-config validate-install
    
  • 检查此乘客安装是否在 PATH... ✓
  • 检查是否有其他Passenger安装... ✓
  • 检查是否安装了 Apache... ✓
  • 检查Passenger 模块是否在Apache 中正确配置... ✓

  • 这是我运行时的输出
    $ sudo /user/sbin/passenger-memory-status
    
    Version: 5.1.2
    Date   : 2017-03-16 07:42:59 -0500
    
    ---------- Apache processes ----------
    PID    PPID   VMSize    Private  Name
    --------------------------------------
    18237  1      227.0 MB  0.2 MB   /usr/sbin/httpd -DFOREGROUND
    18286  18237  229.0 MB  0.2 MB   /usr/sbin/httpd -DFOREGROUND
    18287  18237  229.0 MB  0.2 MB   /usr/sbin/httpd -DFOREGROUND
    18288  18237  229.0 MB  0.2 MB   /usr/sbin/httpd -DFOREGROUND
    18289  18237  229.0 MB  0.3 MB   /usr/sbin/httpd -DFOREGROUND
    18290  18237  229.0 MB  0.3 MB   /usr/sbin/httpd -DFOREGROUND
    18300  18237  229.0 MB  0.2 MB   /usr/sbin/httpd -DFOREGROUND
    ### Processes: 7
    ### Total private dirty RSS: 1.73 MB
    
    
    -------- Nginx processes --------
    
    ### Processes: 0
    ### Total private dirty RSS: 0.00 MB
    
    
    ----- Passenger processes -----
    PID    VMSize    Private  Name
    -------------------------------
    18264  417.0 MB  1.0 MB   Passenger watchdog
    18267  649.9 MB  3.2 MB   Passenger core
    18275  427.3 MB  3.0 MB   Passenger ust-router
    ### Processes: 3
    ### Total private dirty RSS: 7.11 MB
    

    最佳答案

    我通过运行以下命令解决了这个问题:

    $ sudo chcon -R -v -t httpd_sys_rw_content_t /tmp
    

    我不知道更改整个文件夹的权限是否会影响其他事情。大家觉得这可能是个问题吗?

    作为替代方案,我也可以将PassengerInstanceRegistryDir 设置为不同的位置,然后再次运行上述命令。

    关于ruby-on-rails - 使用Passenger 和Apache : Unexpected error in mod_passenger: Cannot connect to Unix socket Permission denied (errno=13) 部署Rails 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42830792/

    相关文章:

    apache - 尽管设置了环境变量,Ant 使用的是 JRE 而不是 JDK

    centos - 用于启动守护进程的 Perl 包装器在由 cron 运行时会留下僵尸

    linux - 如何将 svn 根存储库移动到不同的文件系统?

    mysql - CentOS6.9(MySql v5.7.22)使用mysql C API mysql_real_query导致内存总是增长

    ruby-on-rails - 使用 Devise 实现双因素身份验证

    apache - 如何正确安装 ssl 到 apache2 OVH vps

    ruby-on-rails - 如何过滤 Rails 中的对象,以便只有创建它的用户或管理员才能销毁该对象?

    apache - 同一路径的多个 Apache Location 指令

    ruby-on-rails - 使用 :reject_if => :all_blank on double nested forms

    mysql - 当记录通常已经存在时如何有效地使用 first_or_initialize