Recientemente tuve la necesidad de programar un poco en PHP, y como algunos sabrán, el servidor Web favorito para habilitar PHP es Apache.
Sin embargo por lo general en linux, el directorio en el cual Apache lee los sitios para poderlos mostrar en el navegador, es /var/www un directorio con ciertas restricciones y casi siempre no accesible al usuario que no sea root o al dueño de apache.
Esto es un problema, pues si estas utilizando un sistema de gestión de versiones, es complicado al realizar push, pulls o cualquier cambio utilizar el comando sudo o en su defecto ser usuario root (super usuario), también puedes optar por otra solución, la cual yo utilicé y me harto, esto era tener tu proyecto en tu carpeta donde normalmente los tienes y copiar a /var/www los archivos que quieres mostrar, lo cual es una joda total.
Derivado de esta situación me di a la tarea de buscar como habilitar o configurar un directorio de mi home para que Apache pudiera mostrar en el navegador.
Existe mucha info como hacer esto, es decir, como habilitar el directorio web de los usuarios en linux, sin embargo, después de seguir varios tutoriales, obtenía un horrible ""dir access forbidden".
Bueno ahora la solución:
Mi sistema es xUbuntu, lo cual no debería variar mucho en cualquier distro basada en Debian.
Lo primero es revisar si tenemos habilitado en apache la capacidad de utilizar los directorios de usuario, para esto debemos revisar esto en los directorios mods-available y mods-enabled, el primero nos dice que módulos tenemos disponibles y en el segundo cuales están habilitados.
Demos un:
ls -l /etc/apache2/mods-available
Ahora ubiquemos los módulos que comienzan con userdir.... estos módulos deberían estar habilitados, osea debería aparecer al listar el directorio mods-enabled, para eso revisamos con un ls.
ls -l /etc/apache2/mods-enabled
En caso de que no estén podemos crear un enlace simbólico de la siguiente forma:
sudo ln -s /etc/apache2/mods-available/userdir* /etc/apache2/mods-enabled/
Una vez configurado esto practicamente esta habilitado el módulo para que apache pueda leer los sitios de nuestro directorio de usuario particularmente de la carpeta: public_html de nuestro home.
Ahora falta reiniciar apache para que los cambios surtan efecto.
sudo /etc/init.d/apache2 restart
Ahora es necesario que si no tenemos en el home de nuestro usuario la carpeta public_html la creemos ya que en esta carpeta se va a leer los sitios web del usuario.
La url para leer estos sitios desde el navegador seria:
http://localhost/~usuario/
en mi caso
http://localhost/~alex/
Ahora si esto les causa algun error con apache sobre permisos, o un forbidden o un "Permission denied: access to", es porque este directorio y nuestro home deben tener ciertos permisos. Basta con darle un chmod a la carpeta y al home de la siguiente forma:
chmod 711 /home/usuario
chmod 711 /home/usuario/public_html
en mi caso
chmod 711 /home/alex
chmod 711 /home/alex/public_html
Si aún con estos cambios se mantiene el problema de permisos, es necesario darle permisos a la carpeta home, de la siguiente forma:
sudo chmod 711 /home
Con esto deberia de funcionar los archivos .html que tengamos en la carpeta public_html, al ingresar a la página: http://localhost/~alex/ claro alex debe ser el nombre de tu usuario.
Para que puedas ejecutar los archivos o proyectos PHP es necesario habilitar apache para esos directorios, esto es muy sencillo, solo debemos ir al archivo:
sudo nano /etc/apache2/mods-enabled/php5.conf
puedes usar vi, vim, sublime o el editor que más te agrade
y comentar lo que aparece en la sección de PHP, de la siguiente forma:
Ahora solo basta con reiniciar Apache y listo,
sudo /etc/init.d/apache2 restart
ya podemos trabajar desde nuestra carpeta public_html de nuestro home, y hacer commits, ver cambios etc.. sin necesidad de utilizar sudo o ir a /var/www no es como el webrick de rails pero es más cómodo desarrollar así.
https://bbs.archlinux.org/viewtopic.php?id=100801
HAbilitar php -> http://ubuntuforums.org/showthread.php?t=1521010
http://ubuntuforums.org/showthread.php?t=1577717
http://huevas.wordpress.com/2007/07/03/habilitar-directorios-de-usuario-en-apache2-userdir/
1 comentario:
Excelete amigo, muchisimas gracias por este post
Publicar un comentario