apache says my DocumentRoot directory doesn't exist

Viewed 31753

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 some 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.

4 Answers

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