在运行 SELinux 的 Cent OS 6.0 上,我收到错误消息“由于此错误,无法初始化乘客:无法启动 Phusion 乘客看门狗”
这个线程讨论了这个问题。 https://groups.google.com/forum/?fromgroups#!topic/phusion-passenger/qaVUIq2HceE
有没有办法在不禁用 SELinux 的情况下解决这个问题。似乎它并不重要,应该配置而不是禁用。
在运行 SELinux 的 Cent OS 6.0 上,我收到错误消息“由于此错误,无法初始化乘客:无法启动 Phusion 乘客看门狗”
这个线程讨论了这个问题。 https://groups.google.com/forum/?fromgroups#!topic/phusion-passenger/qaVUIq2HceE
有没有办法在不禁用 SELinux 的情况下解决这个问题。似乎它并不重要,应该配置而不是禁用。
由于 SELinux 对 Apache 保持警惕,您可以尝试允许 Apache 访问乘客文件和目录。尝试以下,但 YMMV!如果你已经通过 gem 安装了 Phusion Passenger,那么运行这个命令来确定 Phusion Passenger 的根文件夹:
passenger-config --root
然后做
chcon -R -h -t httpd_sys_content_t /path-to-passenger-root
如果您从某种 tarball 安装了 Passenger,请尝试以下操作:
chcon -R -h -t httpd_sys_content_t /path/to/passenger/folder
在任何一种情况下,重新启动 Apache。
您可能还需要满足 SELinux 的 *httpd_sys_content_t* 安全上下文才能访问您的 rails 应用程序。您可能还需要执行以下操作:
chcon -R -h -t httpd_sys_content_t /path/to/your/rails/app
也许这对你有用。
使用 chcon 只能暂时起作用。下次机器重新启动并且 SELinux 重新标记时,配置将丢失。这些文件将被重新标记为适合它们在文件系统中的位置的任何上下文。
如果您将 rails 应用程序放在 /var/www/html 下,那么 SELinux 将在重新标记时维护上下文,因为 SELinux 政策规定这是 Web 内容应该位于的位置。最初,您restorecon -R /var/ww/html/path/to/app
需要设置上下文。
不过我发现,Passenger 做了很多 SELinux 想要否认的事情,所以仅仅重新标记是不够的。创建允许这样做的策略很容易,但我认为这是一种安全风险。太糟糕了,Rails 社区并没有让部署在普通服务器上变得更容易(即不是 Ruby 堆栈)。