开发者

apache says my DocumentRoot directory doesn't exist

I am using Phusion Passenger to deploy a rails application using apache2 on CentOS 5.5. For some reason, I keep getting this message when I start up apache:

> service start httpd

Starting httpd: Warning: DocumentRoot [/home/deploy/my_app/public] does not exist

[ OK ]

The directory most certainly does exist. Here are so开发者_StackOverflowme important files from my configuration:

/etc/httpd/conf/httpd.conf

...

User deploy

Group deploy

...

/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>

The directories /home/deploy, /home/deploy/my_app, and /home/deploy/my_app/public all belong to the deploy user.


I ran into this problem too. Are you running SELinux? Check /etc/sysconfig/selinux, or try echo "0" >/selinux/enforce as root to see if disabling it helps.

If so, you can either modify your selinux policy to allow access to these files, or just disable selinux altogether.


Instead of turning off SELinux you should be able to fix the context issue fairly easily.

You can check the current contexts of your public directory with the following command.

ls -Z /home/deploy/my_app/

If you have a different path on your server that is working (ex: /home/deploy/foo/bar/), check it using the same command and compare with the previous results.

ls -Z /home/deploy/foo/

The Fix: You can then just copy the context from the working directory like this...

chcon /home/deploy/my_app/public/ --reference=/home/deploy/foo/bar/


Please Check whether the /etc/sysconfig/selinux file has execute privilage. If no, grant execute privilage, restart the web server and then try again to acces the page


I had the same problem and found this:

https://www.centos.org/forums/viewtopic.php?t=1742#p9988

Utilizing the semanage tool isn't that hard and, as far as I can tell, is how SELinux is supposed to be used. I believe this is safer than turning it off entirely.

example from provided link:

[root@elite user]# semanage fcontext -a -t public_content_rw_t '/home/user(/.*)?'
[root@elite user]# restorecon -R /home/user
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜