我正在使用Phusion Passenger在CentOS 5.5上使用apache2部署rails应用程序。出于某种原因,我在启动apache时不断收到此消息:
> service start httpd
Starting httpd: Warning: DocumentRoot [/home/deploy/my_app/public] does not exist
[ OK ]
目录肯定存在。以下是我配置中的一些重要文件:
/etc/httpd/conf/httpd.conf中
...
用户部署
集团部署
......
/etc/httpd/conf.d/my_app.conf
< VirtualHost *:80>
ServerName my_app.com
DocumentRoot /home/deploy/my_app/public
< Directory /home/deploy/my_app/public>
Allow from all
Options -MultiViews
< /Directory>
< /VirtualHost>
目录/ home / deploy,/ home / deploy / my_app和/ home / deploy / my_app / public都属于部署用户。
答案 0 :(得分:17)
我也遇到了这个问题。你在运行SELinux吗?检查/ etc / sysconfig / selinux,或以root身份尝试echo "0" >/selinux/enforce
以查看禁用它是否有帮助。
如果是这样,您可以修改selinux策略以允许访问这些文件,或者只是完全禁用selinux。
答案 1 :(得分:2)
您应该能够相当轻松地修复上下文问题,而不是关闭SELinux。
您可以使用以下命令检查public
目录的当前上下文。
ls -Z /home/deploy/my_app/
如果您的服务器上有不同的路径(例如:/ home / deploy / foo / bar /),请使用相同的命令进行检查,并与之前的结果进行比较。
ls -Z /home/deploy/foo/
修复:然后您可以像这样从工作目录中复制上下文......
chcon /home/deploy/my_app/public/ --reference=/home/deploy/foo/bar/
答案 2 :(得分:0)
请检查/etc/sysconfig/selinux
文件是否具有执行权限。如果否,请授予执行权限,重新启动Web服务器,然后再次尝试访问该页面
答案 3 :(得分:0)
我有同样的问题,发现了这个:
https://www.centos.org/forums/viewtopic.php?t=1742#p9988
使用semanage
工具并不难,据我所知,SELinux应该如何使用。我认为这比完全关闭它更安全。
示例来自提供的链接:
[root@elite user]# semanage fcontext -a -t public_content_rw_t '/home/user(/.*)?'
[root@elite user]# restorecon -R /home/user