2010-10-16 17 views
12

Estoy usando Phusion Passenger para implementar una aplicación de rieles usando apache2 en CentOS 5.5. Por alguna razón, me siguen dando este mensaje cuando inicio Apache:Apache dice que mi directorio DocumentRoot no existe

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

La Más sin duda existe. Aquí están algunos archivos importantes de la configuración de mi:

/etc/httpd/conf/httpd.conf
...
usuario implementan
Grupo desplegar
...

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

los directorios/home/desplegar,/home/implementar/my_app, y/home/implementar/my_app/pública todos pertenecen al usuario desplegar.

+0

¿Cuáles son los permisos en los directorios? No soy un experto, pero lo primero que me vino a la mente fue que, aunque hayas nombrado al usuario correcto en httpd.conf, no es necesariamente * ese * usuario que comprueba si el directorio existe ... – vonconrad

+0

Configuré todo a rwxrwxrwx o rwxrw-rw-. root posee/home y deploy posee todo lo demás en el camino a/home/deploy/my_app/public. Gracias, sin embargo. – muirbot

Respuesta

16

También encontré este problema. ¿Estás ejecutando SELinux? Compruebe/etc/sysconfig/selinux, o pruebe echo "0" >/selinux/enforce como root para ver si la deshabilita.

Si es así, puede modificar su política de selinux para permitir el acceso a estos archivos, o simplemente desactivar selinux por completo.

+2

Me encuentro con el mismo problema que @muirbot, y esta solución no ayudó. – Randell

+0

Mismo. Usar el trabajo temporal 'setenforce 0', pero la solución permanente no. ¿Algunas ideas? –

+0

gracias por la solución. No estoy seguro de que sea una solución permanente – RAJ

0

Compruebe si el archivo /etc/sysconfig/selinux tiene privilegios de ejecución. Si no, conceda privilage de ejecución, reinicie el servidor web y luego intente de nuevo para acceder a la página

2

En lugar de desactivar SELinux, debería ser capaz de solucionar el problema de contexto con bastante facilidad.

Puede verificar los contextos actuales de su directorio public con el siguiente comando.

ls -Z /home/deploy/my_app/ 

Si usted tiene un camino diferente en su servidor que está trabajando (por ejemplo:/home/implementar/foo/bar /), lo comprueba usando el mismo comando y comparar con los resultados anteriores.

ls -Z /home/deploy/foo/ 

La solución: continuación, puede simplemente copiar el contexto del directorio de trabajo así ...

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

que tenían el mismo problema y encontré esto:

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

Utilizando la herramienta semanage no es tan difícil y, por lo que yo sé, es cómo SELinux está de acuerdo sed para ser utilizado. Creo que esto es más seguro que apagarlo por completo.

ejemplo desde proporcionado enlace:

[[email protected] user]# semanage fcontext -a -t public_content_rw_t '/home/user(/.*)?' 
[[email protected] user]# restorecon -R /home/user 
Cuestiones relacionadas