Habilitar el módulo userdir de Apache2 en Debian
El módulo userdir
de Apache2 nos permite tener una carpeta en nuestro /home, llamada public_html, donde un usuario de nuestro servidor, puede alojar sus propios documentos y que estos estén disponibles en Apache bajo la url http://mi-servidor/~usuario.
Aunque en distros como OpenSUSE, el módulo userdir
viene habilitado por defecto, en Ubuntu/Debian no es el caso, por lo que si queremos disfrutar de esta característica, tendremos que hacerlo a mano.
Habilitar el módulo
Para empezar, tenemos que habilitar el módulo con la siguiente instrucción.
sudo a2enmod userdir
Configurar el módulo
Nos pedirá que reiniciemos Apache para tener esta característica habilitada. Pero aún nos queda un poco, ahora vamos a configurar el módulo, editando userdir.conf
. Eso si, antes de editarlo, haremos un backup por si las moscas.
sudo cp /etc/apache2/mods-enabled/userdir.conf /etc/apache2/mods-enabled/userdir.conf.backup
sudo nano /etc/apache2/mods-enabled/userdir.conf
Aquí yo uso nano, pero tu puedes usar gedit, vim, leafpad o el editor de texto plano que más te guste.
Este es el original.
<IfModule mod_userdir.c>
UserDir public_html
UserDir disabled root
<Directory /home/*/public_html>
AllowOverride FileInfo AuthConfig Limit Indexes
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS>
Require all granted
</Limit>
<LimitExcept GET POST OPTIONS>
Require all denied
</LimitExcept>
</Directory>
</IfModule>
Modificaremos las líneas 6, 7, 9 y 12, y añadiremos en sus respectivos bloques algunas líneas extra, de modo que quedaría tal que así.
<IfModule mod_userdir.c>
UserDir public_html
UserDir disabled root
<Directory /home/*/public_html>
AllowOverride All
Options MultiViews Indexes SymLinksIfOwnerMatch
<Limit GET POST OPTIONS>
#Require all granted
Order allow,deny
Allow from all
</Limit>
<LimitExcept GET POST OPTIONS>
#Require all denied
Order deny,allow
Deny from all
</LimitExcept>
</Directory>
</IfModule>
Una vez tengamos editado el módulo userdir.conf
, podremos acceder a nuestra public_html
situada en /home/$USER
, lo cual nos permite alojar ahí cualquier documento para que aparezca en nuestro servidor (y si es un index.html, mejor).
Para terminar, reiniciamos Apache2 y añadimos el directorio.
sudo service apache2 restart
mkdir /home/$USER/public_html
Sin embargo, esto aún no soporta PHP, por ejemplo. Veremos como añadir ese soporte en otro artículo.
Posible error de Apache2
Es posible que tras configurarlo, al acceder a http://mi-servidor/~usuario nos de un error de permisos (403 Forbidden). La solución a esto es sencilla, basta con asegurarnos de que nuestra carpeta personal tiene permiso de lectura y ejecución para grupos y otros usuarios.
sudo chmod -R 755 /home/tu-usuario/
Si aún así falla, nos vamos a /etc/apache2/apache2.conf
y como root añadimos el siguiente código:
<Directory /home/*/public_html>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
Una vez hecho esto, no debería dar error de nuevo.