Un Virtual Host es una configuración que permite a Apache servir distintos sitios desde un mismo servidor.
En una configuración básica, Apache sirve ficheros desde un único directorio. Eso está bien para probar, pero se queda corto en cuanto queremos separar proyectos, dominios o aplicaciones.
Un Virtual Host permite que una misma máquina esté asociada con distintos dominios o direcciones IP. De forma resumida, Apache distingue el dominio o la IP solicitada, y redirige la petición para servir los ficheros desde distintos directorios.
Aunque permitir funcionar con distintos dominios sea su utilidad principal, en cualquier caso, configurar Virtual Host es una medida que favorece la mantenibilidad del sistema. Por tanto, es conveniente configurarlo aunque en un primer momento únicamente tengamos un dominio o dirección IP.
Crear directorio con los ficheros a servir
Crear un directorio para el contenido
En primer lugar, creamos un directorio donde almacenaremos los ficheros a servir, por ejemplo ‘/var/www/example.com/html’
sudo mkdir -p /var/www/example.com/html
A continuación, tenemos que conceder los permisos apropiados a esta nueva carpeta.
Conceder permisos
sudo chown -R
Crear un fichero de prueba
A continuación, crearemos un fichero de ejemplo ‘index.html’ en el directorio que acabamos de crear
nano /var/www/example.com/html/index.html
Con el contenido,
<html>
<head>
<title>¡Hola mundo!</title>
</head>
<body>
<h1>Esta es tu pagina web. Enhorabuena!</h1>
</body>
</html>
Configurar el Virtual Host
Ahora, copiamos la configuración por defecto en nuevo fichero de configuración,
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf
Y editamos su contenido
sudo nano /etc/apache2/sites-available/example.com.conf
De forma que tenga la siguiente forma
<VirtualHost *:80> ServerAdmin [email protected] ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/example.com/html ErrorLog
Habilitar/deshabilitar Virtual Host
Ahora, para activar nuestro Virtual Host usamos el comando ‘a2ensite’
sudo a2ensite example.com.conf
Si por el contrario queremos deshabilitar, usamos el comando ‘a2dissite’. Por ejemplo, para deshabilitar el servidor por defecto usamos
sudo a2dissite 000-default.conf
Reiniciar Apache
Finalmente, reinicamos Apache para que refleje los cambios realizados,
sudo systemctl restart apache2
¡Así de sencillo! Por supuesto, podríamos repetir el proceso con tantos dominios como fuera necesario. Y, cómo decíamos, es una medida que conveniente que deberíamos realizar en cualquier implantación de Apache.

