为什么mod_passenger.so会发生此权限错误?

Eth*_*han 13 ruby ruby-on-rails passenger rvm

我正在使用RVM和Passenger设置生产RHEL 6服务器.我已经安装了RVM(到我家的目录),安装了Passenger,并将所需的行添加到httpd.conf:

LoadModule passenger_module /home/em/.rvm/gems/ruby-1.9.2-p290@rails_3_production/gems/passenger-3.0.11/ext/apache2/mod_passenger.so
PassengerRoot /home/em/.rvm/gems/ruby-1.9.2-p290@rails_3_production/gems/passenger-3.0.11
PassengerRuby /home/em/.rvm/wrappers/ruby-1.9.2-p290@rails_3_production/ruby
Run Code Online (Sandbox Code Playgroud)

但是,当我重新启动Apache时,我收到此错误...

$ sudo /sbin/service httpd restart
Stopping httpd:                                            [FAILED]
Starting httpd: httpd: Syntax error on line 218 of /etc/httpd/conf/httpd.conf: Cannot load /home/em/.rvm/gems/ruby-1.9.2-p290@rails_3_production/gems/passenger-3.0.11/ext/apache2/mod_passenger.so into server: /home/em/.rvm/gems/ruby-1.9.2-p290@rails_3_production/gems/passenger-3.0.11/ext/apache2/mod_passenger.so: cannot open shared object file: Permission denied
                                                           [FAILED]
Run Code Online (Sandbox Code Playgroud)

在实验上,我将整个路径设置~/.rvm/...为777,但我仍然得到同样的错误.

有什么想法吗?

Eth*_*han 17

事实证明这与SELinux有关.

乘客文档在这里讨论它.

安装Passenger后,找到Passenger root ...

passenger-config --root
Run Code Online (Sandbox Code Playgroud)

然后运行这个......

chcon -R -h -t httpd_sys_content_t /path-to-passenger-root
Run Code Online (Sandbox Code Playgroud)

  • 这使我更进一步,但仍然无法正常工作-最终遵循了此[guide](http://sergiy.kyrylkov.name/2012/02/26/phusion-passenger-with-apache-on-rhel -6-centos-6-sl-6-with-selinux /)。这基于乘客/ apache实际需要运行的内容创建策略。 (2认同)

okl*_*liv 16

$ sudo setenforce 0

帮助过我

希望对别人有所帮助!

UPDATE

我不得不说上面的解决方案是暂时的(直到重启)

所以,就这个答案的流行程度而言,让我展示如何完全禁用SELinux ......

这里是:

$ sudo vi /etc/sysconfig/selinux
Run Code Online (Sandbox Code Playgroud)

要么

$ sudo vi /etc/selinux/config
Run Code Online (Sandbox Code Playgroud)

然后找到这一行

SELINUX=enforcing
Run Code Online (Sandbox Code Playgroud)

并将其更改为

SELINUX=disabled
Run Code Online (Sandbox Code Playgroud)

保存selinux配置.

现在SELinux已完全禁用.

干杯