El servidor HTTP Apache es un servidor web HTTP de código abierto, para plataformas Unix (BSD, GNU/Linux, etc.), Microsoft Windows, Macintosh y otras, que implementa el protocolo HTTP/1.1 y la noción de sitio virtual. Cuando comenzó su desarrollo en 1995 se basó inicialmente en código del popular NCSA HTTPd 1.3, pero más tarde fue reescrito por completo.

Su nombre se debe a que alguien quería que tuviese la connotación de algo que es firme y enérgico pero no agresivo, y la tribu Apache fue la última en rendirse al que pronto se convertiría en gobierno de EEUU, y en esos momentos la preocupación de su grupo era que llegasen las empresas y «civilizasen» el paisaje que habían creado los primeros ingenieros de internet. Además Apache consistía solamente en un conjunto de parches a aplicar al servidor de NCSA. En inglés, a patchy server (un servidor «parcheado») suena igual que Apache Server.

Instala el servidor web Apache2 en una máquina.

El primer paso es instalar el servidor «Apache2» apt install apache2

Modifica la página index.html que viene por defecto y accede a ella desde un navegador.

Vamos a modificar el fichero «index.html» en el cual aparece la página por defecto que tendremos en nuestro servidor apache, dicho fichero se encuentra en «/var/www/html»:

root@apache:/home/vagrant# cd /var/www/html/
root@apache:/var/www/html# nano index.html

Eliminamos su contenido y lo modificamos para que quede así:

Vemos cual es la ip de nuestra maquina para ello ejecutamos un ip a y la insertamos en el navegador:

Configura la resolución estática en los clientes

Al querer poner dos paginas distintas pero con la misma dirección IP tendremos que crear dos ficheros «.conf», que están alojados en «/etc/apache2/sites-available» y el fichero «apache2.conf» que será donde configuremos los directory.

Primero editamos el fichero «apache2.conf», para que quede asi:

root@apache:/home/vagrant# nano /etc/apache2/apache2.conf 

<Directory /srv/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>
Info! Lo creamos en /srv/www/ igual que lo podriamos crear en /var/www/.

A continuación crearemos dos copias del fichero «000-default.conf» y lo renombramos con el nombre que queramos.

root@apache:/etc/apache2/sites-available# cp 000-default.conf iesgn.conf
root@apache:/etc/apache2/sites-available# cp 000-default.conf departamentos.conf

Después procederemos a editarlos, para modificar el «DocumentRoot» y el «ServerName»

iesgn.conf

root@apache:/etc/apache2/sites-available# nano iesgn.conf

ServerName www.iesgn.org

ServerAdmin webmaster@localhost
DocumentRoot /srv/www/iesgn
        <Directory  /srv/www/iesgn>
                Require all granted
        </Directory>

departamentos.conf

root@apache:/etc/apache2/sites-available# nano departamentos.conf

ServerName departamentos.iesgn.org

ServerAdmin webmaster@localhost
DocumentRoot /srv/www/departamentos
        <Directory  /srv/www/departamentos>
                Require all granted
        </Directory>

Y por último creamos las carpeta donde se va a alojar los «index.html»:

root@apache:/etc/apache2/sites-available# mkdir /srv/www/

root@apache:/etc/apache2/sites-available# mkdir /srv/www/departamentos root@apache:/etc/apache2/sites-available# mkdir /srv/www/iesgn

Y creamos los index.html

iesgn.conf

departamentos.conf

No es suficiente crear los ficheros de configuración de cada sitio web, es necesario crear un enlace simbólico a estos ficheros dentro del directorio /etc/apache2/sites-enabled, para ello:

root@apache:/etc/apache2/sites-available# a2ensite iesgn
Enabling site iesgn.
To activate the new configuration, you need to run:
  service apache2 reload
root@apache:/etc/apache2/sites-available# a2ensite departamentos
Enabling site departamentos.
To activate the new configuration, you need to run:
  service apache2 reload

Reiniciamos el servicio para que se guarden todos los cambios.

root@apache:/etc/apache2/sites-available# /etc/init.d/apache2 restart
[ ok ] Restarting apache2 (via systemctl): apache2.service.

Y por último para comprobar su funcionamiento añadimos al fichero «/etc/hosts», la ip de nuestra maquina para resolver nombres.

127.0.0.1       localhost
127.0.1.1       Juanlu-PC
[IP_HOST]       www.iesgn.org
[IP_HOST]       departamentos.iesgn.org

Cuando se entre a la dirección www.iesgn.org se redireccionará automaticamente a www.iesgn.org/principal, donde se mostrará el mensaje de bienvenida.

Info! En el directorio principal no se permite ver la lista de los ficheros, no se permite que se siga los enlaces simbólicos y no se permite negociación de contenido.

En nuestro /etc/apache2/sities-available/iesgn.conf tiene que quedar asi:

        ServerName www.iesgn.org

        ServerAdmin webmaster@localhost
        DocumentRoot /srv/www/iesgn
    RedirectMatch permanent ^/$ "/principal/" 
        <Directory /srv/www/iesgn/principal>
                Options -Indexes -FollowSymLinks -MultiViews
        </Directory>

Una vez configurado el fichero «iesgn.conf», al introducir la direccion «www.iesgn.org» vamos a acceder directamente a «/principal/»

Si accedes a la página www.iesgn.org/principal/documentos se visualizarán los documentos que hay en /srv/doc.

Info! Por lo tanto se permitirá el listado de fichero y el seguimiento de enlaces simbólicos siempre que sean a ficheros o directorios cuyo dueño sea el usuario.

Accedemos al fichero /etc/apache2/sities-available/iesgn.conf y añadiremos la siguientes líneas, para poder acceder al listado de ficheros de la carpeta «/srv/doc»:

        
        Alias "/principal/documentos" "/srv/doc" 
        <Directory /srv/doc/>
                Options +Indexes
        </Directory>

Y comprobamos que al introducir «/documentos» en el navegador accedemos al contenido de la carpeta.

Ahora procederemos a crear los enlaces simbólicos a la carpeta documentos de nuestra máquina, donde tendremos dos carpetas una tiene permisos del usuario de apache y otra no tiene permisos.

root@apache:/home/vagrant/Documentos# mkdir link_acceso
root@apache:/home/vagrant/Documentos# mkdir link_sinacceso

Creamos los enlaces simbólicos:

Info!chown -h www-data:www-data NOMBRE_FICHERO para cambiar permisos solo al enlace.
root@apache:/home/vagrant/Documentos# ln -svf /home/vagrant/Documentos/link_/ /srv/doc/link_acceso
link_acceso/    link_sinacceso/ 
root@apache:/home/vagrant/Documentos# ln -svf /home/vagrant/Documentos/link_sinacceso/ /srv/doc/link_sinacceso
‘/srv/doc/link_sinacceso’ >> ‘/home/vagrant/Documentos/link_sinacceso/’

Y ya tenemos el enlace simbolico creado:

root@apache:/srv/doc# ls -la
total 8
drwxr-xr-x 2 www-data www-data 4096 Oct 20 07:55 .
drwxr-xr-x 4 www-data www-data 4096 Oct 19 18:39 ..
lrwxrwxrwx 1 www-data www-data   37 Oct 20 07:53 link_acceso >> /home/vagrant/Documentos/link_acceso/
lrwxrwxrwx 1 www-data www-data   40 Oct 20 07:55 link_sinacceso >> /home/vagrant/Documentos/link_sinacceso/
-rw-r--r-- 1 www-data www-data    0 Oct 20 07:10 prueba1.txt
-rw-r--r-- 1 www-data www-data    0 Oct 19 18:39 prueba.txt

Desde la pagina «www.iesgn.org/principal/documentos», observamos que tenemos solo la carpeta creada con acceso(link_acceso) y la otra no aparece.

En todo el host virtual se debe redefinir los mensajes de error de objeto no encontrado y no permitido.

Para poder personalizar la salida del mensaje de error vamos a editar el siguiente fichero:

root@apache:/etc/apache2/conf-available# nano localized-error-pages.conf

Para controlar la salida del error 403 y 404, los cuales vamos a redirigirlos a un «.html» el cual vamos a personalizar a continuación.

Alias /errores/404 /srv/www/errores/404.html
ErrorDocument 404 /errores/404
Alias /errores/403 /srv/www/errores/403.html
ErrorDocument 403 /errores/403
<Location /errores/>
        SetHandler none
</Location>

Y reiniciamos el servicio apache

root@apache:/etc/apache2/conf-available# /etc/init.d/apache2 restart
[ ok ] Restarting apache2 (via systemctl): apache2.service.

Y a continuación procederemos a modificar los ficheros «.html»

404.html

<h1>Error 404</h1>

<p>Documento no encontrado vuelva a la pagina principal:</p>

<A HREF="www.iesgn.org/" TARGET="_BLANK"><p>pagina principal</p>

403.html

<h1>Error 403</h1>

<p>Error de permisos cambie los permisos</p>

<A HREF="www.iesgn.org/" TARGET="_BLANK"><p>Pagina principal</p>

Si entramos en una pagina que no existe no saltara un error 404:

Y para el error «403» vamos a cambiar el permiso a un fichero que vamos a crear ahora mismo:

root@apache:/srv/doc# touch prueba2.txt
root@apache:/srv/doc# ls -l
total 0
lrwxrwxrwx 1 www-data www-data 37 Oct 20 07:53 link_acceso >> /home/vagrant/Documentos/link_acceso/
lrwxrwxrwx 1 www-data www-data 40 Oct 20 07:55 link_sinacceso >> /home/vagrant/Documentos/link_sinacceso/
-rw-r--r-- 1 www-data www-data  0 Oct 20 07:10 prueba1.txt
-rw-r--r-- 1 root     root      0 Oct 27 08:19 prueba2.txt
-rw-r--r-- 1 www-data www-data  0 Oct 19 18:39 prueba.txt
root@apache:/srv/doc# chmod 600 prueba2.txt 
root@apache:/srv/doc# ls -la
total 8
drwxr-xr-x 2 www-data www-data 4096 Oct 27 08:19 .
drwxr-xr-x 4 www-data www-data 4096 Oct 19 18:39 ..
lrwxrwxrwx 1 www-data www-data   37 Oct 20 07:53 link_acceso >> /home/vagrant/Documentos/link_acceso/
lrwxrwxrwx 1 www-data www-data   40 Oct 20 07:55 link_sinacceso >> /home/vagrant/Documentos/link_sinacceso/
-rw-r--r-- 1 www-data www-data    0 Oct 20 07:10 prueba1.txt
-rw------- 1 root     root        0 Oct 27 08:19 prueba2.txt
-rw-r--r-- 1 www-data www-data    0 Oct 19 18:39 prueba.txt

Y ya tenemos que el fichero creado nada mas puede acceder desde el usuario root

En la URL www.iesgn.org/principal/internacional, debe existir dos mensajes de bienvenida: en inglés y en español, por lo tanto se debe permitir la negociación de contenidos.

Para que nuestro navegador resuelva si acceder a ingles a español vamos a cambiar el idioma de navegación, para que al tener el idioma en español podemos ver la pagina en español y si la tenemos en ingles nos muestre la pagina en ingles.

El siguiente paso es crear en nuestro fichero «/etc/apache2/sites-available/iesgn.conf», al cual vamos a añadir lo siguiente:

<Directory /srv/www/iesgn/principal/internacional>
    Options -Indexes +MultiViews -FollowSymLinks
</Directory>

Y por último dentro de «/srv/www/iesgn/principal/», creamos un nuevo directorio al cual le damos todos los permisos correspondientes (www-data:www-data) y creamos dos index.html

root@apache:/srv/www/iesgn/principal/internacional# ls -l
total 8
-rw-r--r-- 1 www-data www-data 81 Oct 27 06:55 index.html.en
-rw-r--r-- 1 www-data www-data 85 Oct 27 06:54 index.html.es

Uno acabado en «es» para España y otro en «en» para Inglaterra.

Idioma Ingles

Idioma Español

Realiza la instalación de webalizer

Webalizer es un pequeño programa hecho en C el cual nos permite generar reportes de alguna página web. Gracias a esos reportes, podemos observar el número de personas que han entrado en la web donde se vaya a instalar(o ejecutar) el webalizer y muchas otras cosas que más adelante les detallaré. Este programa no sólo nos da los reportes cuantitativos, si no que también nos da repostes gráficos, lo que hace mas elegante y sencillo de observar las estadísticas de nuestra página web. Entre otras cosas webalizer es sumamente útil para saber que archivos son los que poseen más número de descargas en nuestra página web.

Primero instalamos webalizer apt install webalizer

A continuación procedemos a modificar el fichero de configuración de webalizer /etc/webalizer/webalizer.conf

Borramos todo las lineas de su interior e insertamos estas:

LogFile         /var/log/apache2/access.log

OutputDir       /srv/www/webalizer/estadistica

Incremental     yes

ReportTitle     Estadísticas de uso de Prueba

HostName        personal

IgnoreSite      localhost

HideURL         *.gif
HideURL         *.GIF
HideURL         *.jpg
HideURL         *.JPG
HideURL         *.ra

MangleAgents    4

Despues vamos a crear el fichero estadistica.conf, para añadir el nuevo «DocumentRoot» y el nuevo server name:

        ServerName www.masterlan.com   

        ServerAdmin webmaster@localhost
        DocumentRoot /srv/www/webalizer/      
        RedirectMatch permanent ^/$ "/estadistica/" 
        <Directory /srv/www/webalizer/estadistica>
                Options -Indexes -FollowSymLinks -MultiViews
                AllowOverride All
        </Directory>
Info!En el fichero de configuracion de estadistica hemos habilitado para que una vez introduzcamos la direccion «www.masterlan.com» nos rediriga automaticamente a «/estadistica/».

Habilitamos el fichero creado recientemente:

root@apache:/etc/apache2/sites-available# a2ensite estadistica
Enabling site estadistica.
To activate the new configuration, you need to run:
  service apache2 reload
root@apache:/etc/apache2/sites-available# apache2ctl restart

Comprobamos que funciona la aplicación configurada ejecutando el comando webalizer:

root@apache:/srv/www# webalizer
Webalizer V2.23-08 (Linux 3.16.0-4-amd64 x86_64) locale: personal
Using logfile /var/log/apache2/access.log (clf)
Creating output in /srv/www/iesgn/principal/webalizer
Hostname for reports is 'personal'
History file not found...
Previous run data not found...
Saving current run data... [10/27/2016 07:32:19]
Generating report for October 2016
Saving history information...
Generating summary report
320 records in 1 seconds, 320/sec

Podemos automatizar este proceso con una tarea de «crontab»

Accedemos al fichero de configuración con el siguiente comando crontab -e y utilizamos el editor que mas nos interese, por defecto viene seleccionado «nano»

vagrant@apache:~$ crontab -e
no crontab for vagrant - using an empty one

Select an editor.  To change later, run 'select-editor'.
  1. /bin/nano        <---- easiest
  2. /usr/bin/vim.tiny
 
Choose 1-2 [1]: 1
crontab: installing new crontab

Una vez dentro del fichero de configuración agregamos la siguiente línea al final del fichero:

# m h dom mon dow user command
donde:

m corresponde al minuto en que se va a ejecutar el script, el valor va de 0 a 59
h la hora exacta, se maneja el formato de 24 horas, los valores van de 0 a 23, siendo 0 las 12:00 de la medianoche.
dom hace referencia al día del mes, por ejemplo se puede especificar 15 si se quiere ejecutar cada dia 15
dow significa el día de la semana, puede ser numérico (0 a 7, donde 0 y 7 son domingo) o las 3 primeras letras del día en inglés: mon, tue, wed, thu, fri, sat, sun.
user define el usuario que va a ejecutar el comando, puede ser root, u otro usuario diferente siempre y cuando tenga permisos de ejecución del script.
command refiere al comando o a la ruta absoluta del script a ejecutar, ejemplo: /home/usuario/scripts/actualizar.sh, si acaso llama a un script este debe ser ejecutable

* * * * * /home/vagrant/webalizer.sh

Si como en el ejemplo dejamos todas la variables en «*» se va a ejecutar cada minuto, cada hora durante todos los días del mes.

Después el script es un simple script en bash que lo que hace es ejecutar el comando anterior webalizer

Así pues ya tendremos automatizado el funcionamiento de webalizer.

Por último vamos a restringir el acceso a webalizer desde un hosts para que solo se pueda acceder desde el servidor.

Activamos el módulo de autenticación «digest» y reiniciamos el servicio:

root@apache:/etc/apache2/sites-available# a2enmod auth_digest
Considering dependency authn_core for auth_digest:
Module authn_core already enabled
Enabling module auth_digest.
To activate the new configuration, you need to run:
  service apache2 restart
root@apache:/etc/apache2/sites-available# apache2ctl restart

Nos dirigimos a la carpeta donde se encuentra el contenido de la pagina de estadisticas, creamos un fichero «.htaccess» y añadimos lo siguiente:

AuthType Digest
AuthName "alumno"
AuthUserFile /etc/apache2/.htdigestusers
Require valid-user
Require ip 192.168.100
Info!Nuestra IP interna es una ip estatica que es la 192.168.100.0/24.

El parámetro AuthName o realm es una descripción del equipo al que se quiere acceder mediante esta clase de autenticación. Esta información se usa para calcular las hash de las claves enviadas y que será mostrada al usuario cuando se conecte al servidor.

Y por último creamos una localización adecuada, según lo dicho para la autenticación básica, un fichero .htdigestusers con touch y las passwords de los usuarios. Esto puede hacerse, para un usuario llamado «juanlu», con el siguiente comando: htdigest –c .htdigestusers realm juanlu:

root@apache:/srv/www/webalizer/estadistica# htdigest -c .htdigestusers alumno juanlu
Adding password for juanlu in realm alumno.
New password: 
Re-type new password:

Y copiamos el fichero en «/etc/apache2/»:

root@apache:/srv/www/webalizer/estadistica# mv .htdigestusers /etc/apache2/

A la URL www.masterlan.com/intranet sólo se debe tener acceso desde el cliente de la red local, y no se pueda acceder desde la anfitriona por la red pública.

Lo primero, configurar el fichero creado anteriormente «estadistica.conf»:

        <Directory /srv/www/webalizer/internet/>
                Options -Indexes -FollowSymLinks -MultiViews
                <RequireAll>
                        Require not ip 192.168
                        Require all granted
                </RequireAll>
        </Directory>

En el cliente añadimos la siguiente línea a «/etc/hosts»:

192.168.100.1   www.masterlan.com

Si desde el cliente entramos en la red interna:

root@cliente:/home/vagrant# w3m www.masterlan.com/intranet

Comprobamos que podemos acceder

Si desde el servidor entramos en la red interna:

root@apache:/home/vagrant# w3m www.masterlan.com/intranet

Comprobamos que no podemos acceder

A la URL www.masterlan.com/internet, sin embargo, sólo se debe tener acceso desde la anfitriona por la red pública, y no desde la red local. Muestra los resultados al profesor.

En el servidor añadimos la siguiente línea a «/etc/hosts»:

172.22.9.129    www.masterlan.com
root@apache:/home/vagrant# w3m www.masterlan.com/internet

Comprobamos que podemos acceder

Si desde el cliente entramos en la red externa:

root@cliente:/home/vagrant# w3m www.masterlan.com/internet

Comprobamos que no podemos acceder

Autentificación básica. Limita el acceso a la URL www.masterlan.com/secreto.

Esta autenticación guarda los usuarios y sus contraseña encriptadas en un archivo. Los usuarios y contraseñas se tienen que ir metiendo uno a uno. Este módulo de apache viene activado por defecto. Para utilizarlo en nuestra pagina añadiremos las siguientes líneas al fichero .htaccess.

Vamos a crear la pagina «www.masterlan.com/secreto» para que no se pueda acceder sin contraseña:

root@apache:/srv/www/webalizer# mkdir secreto
root@apache:/srv/www/webalizer# nano index.html 
root@apache:/srv/www/webalizer# mv index.html secreto/ 
root@apache:/srv/www/webalizer# nano .htaccess

Y modificamos el fichero «.htaccess»:

AuthType basic
AuthName “Identifiquese”
AuthUserFile /etc/apache2/.htbasic
Require valid-user

Estas opciones quieren decir:
1. Le especificamos que es autenticación básica.
2. Este sera el mensaje que nos aparecerá al pedir la contraseña.
3. Esta es la ubicación del fichero con los usuarios y sus contraseñas.
4. Le indicamos uno o varios usuarios poniendo por ejemplo “Require user NOMBRE_USUARIO”.También podemos agregar cualquier un usuario válido.

Y por último creamos el fichero de credenciales en «/etc/apache/auth_basic», para ello utilizaremos el comando «htpasswd:

root@apache:/etc/apache2/mods-available# htpasswd -c /etc/apache2/.htbasic secreto
New password: 
Re-type new password: 
Adding password for user secreto

Info! Es importante ser consciente, sin embargo, de que la autenticación Básica envía la contraseña desde el cliente hasta el navegador sin encriptar. Por lo tanto, este método no debería ser usado para información altamente sensible.

Autenticación digest.

La autenticación tipo digest soluciona el problema de la transferencia de contraseñas en claro sin necesidad de usar SSL. El procedimiento, como veréis, es muy similar al tipo básico pero cambiando algunas de las directivas y usando la utilidad “htdigest” en lugar de “htpassword” para crear el fichero de contraseñas. El módulo de autenticación necesario suele venir con Apache pero no habilitado por defecto. Para habilitarlo:

root@apache:/home/vagrant# a2enmod auth_digest
Considering dependency authn_core for auth_digest:
Module authn_core already enabled
Module auth_digest already enabled

El cual ya podemos observar que se encuentra activo del ejercicio anterior.

A continuación modificamos el fichero «.htaccess» de la carpeta secreto y añadimos lo siguiente:

AuthType Digest
AuthName "directivos"
AuthUserFile /etc/apache2/.htdigestusers
Require valid-user

Añadimos los nuevos usuarios del grupo directivos

htdigest /etc/apache2/.htdigestusers directivos juanlu
htdigest /etc/apache2/.htdigestusers directivos admin

Ahora procedemos a hacer las comprobaciones observamos que si introducimos un usuario del grupo alumnos, no vamos a poder acceder, pero si intentamos acceder desde el usuario «juanlu» o «admin» tendremos acceso:

Combinar control acceso, autenticación tipo digest

Modificaremos el fichero «.htaccess» de tal forma que desde la red privada «192.168.100» podamos acceder sin necesidad de autentificación, pero desde la red pública si la necesitemos.

Añadimos la siguiente línea a fichero «.htaccess» creado anteriormente:

Require ip 192.168.100

Accedemos desde local

Accedemos desde red pública

Configuración del fichero «.htaccess» en un hosting

AllowOverride controla qué directivas se pueden situar el los ficheros .htaccess.

Los valores de AllowOverride pueden ser «All», «None», o una combinación de:

  • AuthConfig: Permitir el uso de directivas de autorización (AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, Require, etc.).
  • FileInfo Permitir el uso de directivas de control de tipo de documentos (DefaultType, ErrorDocument, ForceType, LanguagePriority, SetHandler, SetInputFilter, SetOutputFilter, etc).
  • Indexes Permitir el uso de directivas que controlan los índices de directorios (AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName, etc.).
  • Limit Permitir el uso de directivas de acceso de hosts (Allow, Deny y Order).
  • Options Permitir el uso los valores de la directiva Options.

Habilita el listado de ficheros en la URL http://host.dominio/nas.

Para habilitar, que se muestre un listado de ficheros cuando entres en «hosting/nas» vamos a crear un fichero «.htaccess» y lo vamos a añadir la siguiente línea:

Options +Indexes

Si queremos verlo de una forma más amigable podemos añadir aparte la siguiente línea:

Crea una redirección permanente: cuando entremos en http://host.dominio/google salte a www.google.es.

Para redireccionar a «www.google.es» añadimos las siguientes lineas en el fichero «.htaccess»:

Options -Indexes -FollowSymLinks -MultiViews
redirectMatch 301 / http://www.google.es

Pedir autenticación para entrar en la URL http://host.dominio/prohibido

Primero en el servidor apache creamos el usuario para la autenticación básica:

root@apache:/srv/www/webalizer/secreto# htpasswd -c .htbasic juanlu
New password: 
Re-type new password: 
Adding password for user juanlu

Y modificamos el fichero «.htaccess»:

AuthType Basic
AuthName "Identifiquese" 
AuthUserFile .htbasic 
Require valid-user

Subimos la carpeta al hosting y comprobamos su funcionamiento:

Activa y configura el módulo userdir

Permite que cada usuario del sistema tenga la posibilidad de tener un directorio (por defecto se llama public_html) donde alojar su página web.

Userdir es un módulo de apache que hace posible que todos los usuarios con acceso a un servidor tengan una carpeta llamada «public_html» en la cual puedan alojar sus páginas y archivos.

Vamos a habilitar el modulo «userdir»:

root@apache:/etc/apache2/mods-available# a2enmod userdir
Enabling module userdir.
To activate the new configuration, you need to run:
  service apache2 restart

Y reiniciamos el servicio:

root@apache:/etc/apache2/mods-available# /etc/init.d/apache2 restart
[ ok ] Restarting apache2 (via systemctl): apache2.service.

Creamos en la carpeta del usuario vagrant un directorio «public_html», le damos permisos:

vagrant@apache:~$ pwd
/home/vagrant
vagrant@apache:~$ mkdir public_html
vagrant@apache:~$ chmod 755 public_html/

Creamos un fichero index.html para la comprobación y accedemos con la siguiente direccion(ip/~[usuario]):

http://192.168.1.51/~vagrant/