2010-10-16 17 views
12

Sto utilizzando Phusion Passenger per distribuire un'applicazione rails utilizzando apache2 su CentOS 5.5. Per qualche ragione, continuo a ricevere questo messaggio quando avvio apache:apache dice che la mia directory DocumentRoot non esiste

> service start httpd
Starting httpd: Warning: DocumentRoot [/home/deploy/my_app/public] does not exist
[ OK ]

La directory sicuramente esiste. Qui ci sono alcuni file importanti da mia configurazione:

/etc/httpd/conf/httpd.conf
...
utente distribuire gli
Gruppo distribuire
...

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

la directory/home/deploy,/home/deploy/my_app, e/home/deploy/my_app/pubblico tutto appartenere all'utente deploy.

+0

Quali sono le autorizzazioni per le directory? Non sono un esperto, ma la prima cosa che mi è venuta in mente è che anche se hai nominato l'utente corretto in httpd.conf, non è necessariamente * quell'utente che controlla se la directory esiste ... – vonconrad

+0

I set tutto per rwxrwxrwx o rwxrw-rw-. root owns/home e deploy possiede tutto il resto sulla strada per/home/deploy/my_app/public. Grazie comunque. – muirbot

risposta

16

Ho incontrato anche questo problema. Stai usando SELinux? Controlla/etc/sysconfig/selinux, o prova come echo "0" >/selinux/enforce come root per vedere se la disabilitazione aiuta.

In tal caso, è possibile modificare la politica di selinux per consentire l'accesso a questi file o semplicemente disabilitare selinux.

+2

Sto incontrando lo stesso problema di @muirbot e questa soluzione non ha aiutato. – Randell

+0

Stesso. L'uso temporaneo di 'setenforce 0' funziona, ma la soluzione permanente no. Qualche idea? –

+0

grazie per la soluzione. Non sono sicuro che sia una soluzione permanente – RAJ

0

Si prega di verificare se il file /etc/sysconfig/selinux ha eseguito il privilegio. Se no, concedere l'esecuzione di privilage, riavviare il server Web e quindi riprovare per accedere alla pagina

2

Invece di disattivare SELinux, è possibile risolvere facilmente il problema di contesto.

È possibile controllare i contesti correnti della directory public con il seguente comando.

ls -Z /home/deploy/my_app/ 

Se si dispone di un percorso diverso sul server che sta lavorando (es:/home/deploy/foo/bar /), controllare utilizzando lo stesso comando e confrontare con i risultati precedenti.

ls -Z /home/deploy/foo/ 

la correzione: È possibile quindi basta copiare contesto dalla directory di lavoro come questo ...

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