2012-07-10 106 views

回答

3

由于SELinux对Apache很谨慎,您可以尝试允许Apache访问乘客文件和目录。尝试以下,但YMMV!如果您已经通过创业板安装的Phusion客运,然后运行这个命令来确定的Phusion乘客的根文件夹:

passenger-config --root 

然后做

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

如果您安装了某种形式的压缩包客运,尝试取而代之的是:

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 

也许这会对您有用。

0

使用chcon只能暂时使用。下一次机器重新启动并且SELinux执行重新标记时,配置将丢失。这些文件将被重新标记为适用于文件系统中的任何环境。

如果您将rails应用程序放在/ var/www/html下,那么SELinux将在relabel时间维护上下文,因为SELinux策略表示这是web内容应该在的位置。最初你会做restorecon -R /var/ww/html/path/to/app来设置上下文。

虽然我发现Passenger做了很多SELinux想要否认的东西,所以只是重新标记是不够的。制定政策容易做到这一点很容易,但我认为这是一种安全风险。太糟糕了Rails社区并没有让它更容易部署在普通的服务器上(即不是Ruby堆栈)。