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

时间:2012-02-18 01:31:40

标签: ruby-on-rails ruby rvm passenger

我正在使用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

但是当我重新启动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]

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

有什么想法吗?

2 个答案:

答案 0 :(得分:17)

事实证明这与SELinux有关。

Passenger docs讨论here

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

passenger-config --root

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

chcon -R -h -t httpd_sys_content_t /path-to-passenger-root

答案 1 :(得分:16)

$ sudo setenforce 0

帮助我

希望它能帮到别人!

<强>更新

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

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

这里是:

运行

$ sudo vi /etc/sysconfig/selinux

$ sudo vi /etc/selinux/config

然后找到这一行

SELINUX=enforcing

并将其更改为

SELINUX=disabled

保存selinux配置。

现在SELinux已完全禁用。

欢呼声