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
精彩评论