【问题标题】:Why is this permissions error occurring with mod_passenger.so?为什么 mod_passenger.so 会出现此权限错误?
【发布时间】:2012-03-09 09:51:48
【问题描述】:

我正在使用 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,但我仍然遇到同样的错误。

有什么想法吗?

【问题讨论】:

  • 看起来乘客模块在加载某些东西时出现问题:/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,请使用乘客文档验证您已在乘客之前加载了所有必需的模块

标签: ruby-on-rails ruby rvm passenger


【解决方案1】:

$ sudo setenforce 0

帮了我

希望对他人有所帮助!

更新

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

所以,就这个答案的受欢迎程度而言,让我展示一下如何完全禁用 SELinux...

这里是:

运行

$ sudo vi /etc/sysconfig/selinux

$ sudo vi /etc/selinux/config

然后找到这一行

SELINUX=enforcing

并将其更改为

SELINUX=disabled

保存 selinux 配置。

现在 SELinux 已完全禁用。

干杯

【讨论】:

  • 如果你想关闭 selinux,我一直很喜欢使用 SELINUX=permissive,因为它会打印警告而不是让事情不工作。
【解决方案2】:

原来与 SELinux 有关。

Passenger 文档讨论它here

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

passenger-config --root

然后运行这个...

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

【讨论】:

  • 这让我走得更远,但事情仍然没有奏效 - 最终关注了这个guide。这会根据乘客/apache 实际需要运行的内容创建策略。
  • 在 CentOS 6.5 上对我不起作用,其中用户从 gem 安装了乘客并且该用户管理 Apache 配置。像@okliv 的回答那样禁用 SELinux 是可行的,所以它仍然是一个类似的 SELinux 问题。
猜你喜欢
  • 1970-01-01
  • 2021-08-04
  • 2010-12-30
  • 2021-03-29
  • 2022-01-04
  • 2018-12-06
  • 2021-01-08
  • 2021-09-03
  • 1970-01-01
相关资源
最近更新 更多