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)
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已完全禁用.
干杯