7 de julio de 2013

Directorios de usuario en Apache2 con userdir + PHP activo

Si tienes un ordenador multiusuario que tenga habilitado un servidor web y te interesa que cada usuario pueda tener su propia porción de dicho servidor para almacenar sus propios archivos, el mod userdir te resultará muy útil, ya que le da a cada usuario del sistema un directorio propio dentro del servidor, que se encuentra dentro de su carpeta de usuario, por lo que dentro de dicho directorio de usuario tendrá total control sobre los archivos y carpetas ahí alojados.

Para habilitar el mod userdir lo único que hay que hacer es ejecutar el comando para activar complementos de Apache indicando que se quiere activar userdir, y reiniciar el servicio de Apache2 para que los cambios se tengan en cuenta:

# a2enmod userdir
# service apache2 restart

Hecho eso, todos los usuarios son libres de crear una carpeta en su HOME llamada public_html. Para acceder a esa carpeta desde el servidor web, sólo hay que navegar en el navegador a la subcarpeta /~[usuario], donde ~ es el símbolo de la tilde, que puede ser escrito usando el carácter Alt Gr + 4 en un teclado estándar, y donde [usuario] es el nombre de usuario de Linux. Por ejemplo, si tu usuario es foo, tu carpeta será /home/foo/public_html, y para acceder desde un navegador web habrá que navegar hasta http://localhost/~foo, por ejemplo.

Por defecto PHP5 no está activado en los directorios de user_dir, pero esto es algo que podemos habilitar accediendo al archivo de configuración de PHP5, php5.conf, que por defecto se debería encontrar en la ubicación /etc/apache2/mods-enabled/php5.conf (dando por hecho que PHP5 está activo). Recuerda que necesitas ser superusuario o root para poder hacer los cambios que vamos a hacer.

Dentro de ese archivo encontrarás una sección cuyo contenido será algo parecido a esto:

<IfModule mod_userdir.c>
    <Directory /home/*/public_html>
        php_admin_value engine Off
    </Directory>
</IfModule>

Habrá que comentar o eliminar la línea que dice php_admin_value engine Off. Hecho eso, guardar los cambios en el archivo, y volver a reiniciar el servicio de Apache2 para que se actualicen las configuraciones usando de nuevo el comando

# service apache2 restart

Hecho eso, podrás crear archivos PHP dentro de las carpetas public_html y comprobarás que puedes ejecutar códigos PHP.