apache说我的DocumentRoot目录不存在

时间:2010-10-16 07:26:31

标签: ruby-on-rails apache2 passenger

我正在使用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都属于部署用户。

4 个答案:

答案 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