Un Virtual Host (o Host Virtual) es la forma mediante la cual se consigue que varios dominios respondan desde la misma dirección IP (basado en nombres), en la misma máquina (un ordenador o un servidor). Esto es muy útil cuando se quiere lanzar varios sitios web sobre un único servidor virtual (VPS, Virtual Private Server). Cada sitio web mostrará diferente contenido, dependiendo del dominio a través del cual estén accediendo.
El servidor web Apache HTTP fue uno de los primeros en permitir la configuración de host virtuales.
Si quiere profundizar más sobre los Virtual Hosts (Hosts Virtuales), puede visitar el siguiente enlace: Hosting Virtual en Apache.
Requisitos Previos
Para configurar un Host Virtual primero hay que tener instalado el servidor web Apache.
Para ello, basta con ejecutar el siguiente comando en la consola del terminal.
sudo apt-get install apache2
Una vez instalado Apache, ya se puede pasar a configurar un Virtual Host.
Crear un nuevo directorio
En este nuevo directorio se guardarán los ficheros del sitio web que se quiere construir.
Para crear el directorio se puede utilizar la opción -p
del comando mkdir
, de manera que creará todos los directorios y subdirectorios necesarios.
sudo mkdir -p /var/www/ejemplo.com/public_html
Este nuevo directorio será el directorio raíz del sitio web.
Dar permisos al directorio
Para dar permisos al usuario para que pueda trabajar con los ficheros de este directorio, ejecutar el siguiente comando.
sudo chown -R $USER:$USER /var/www/ejemplo.com/public_html
También es importante asegurarse de que todo el mundo puede leer los ficheros, por lo que basta con ejecutar el siguiente comando:
sudo chmod -R 755 /var/www
Crear la página de inicio
Crear un fichero con el nombre index.html
dentro del directorio raíz.
sudo nano /var/www/ejemplo.com/public_html/index.html
Esto abre un editor para poder escribir algo de código HTML en el fichero.
<html> <head> <title>Mi nuevo sitio web</title> </head> <body> <h1>Perfecto! Ya tiene configurado su Virtual Host</h1> </body> </html>
Guardar el fichero y salir del editor.
Crear el fichero del nuevo Virtual Host
Para ello ya hay que realizar las configuraciones en el servidor Apache. Hacer una copia del fichero que trae Apache por defecto.
sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ejemplo.com
Editar y configurar el Virtual Host
Veámos qué hay que editar en este fichero, sustituyendo los valores por los del nuevo sitio web.
sudo nano /etc/apache2/sites-available/ejemplo.com
Editar el nombre del dominio que va a utilizar el host virtual.
ServerName ejemplo.com
Si desea que su sitio web sea accesible a través de más de un nombre de dominio (como con www por delante del dominio), debe hacerlo indicando el ServerAlias
, de manera similar a esto.
<VirtualHost *:80> ServerAdmin webmaster@ejemplo.com ServerName ejemplo.com ServerAlias www.ejemplo.com ...
Lo siguiente que hay que configurar es cual va a ser el directorio raíz. Hay que indicar que el directorio a utilizar es el creado anteriormente. Para ello hay que editar la siguiente línea.
DocumentRoot /var/www/ejemplo.com/public_html
Con estos cambios ya estaría configurado el host virtual.
Guardar y salir del editor.
Ahora sólo faltaría activar el host, para que lo hay que ejecutar el siguiente comando.
sudo a2ensite ejemplo.com
Reiniciar Apache
Para que apache tenga en cuenta los cambios, hay que reiniciar el servidor, para lo cual, basta con ejecutar este comando.
sudo service apache2 restart
Es posible que el sistema muestre un mensaje parecido a este:
Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
Como se trata de un mensaje de advertencia, no hay que preocuparse, ya que podrá acceder a su host virtual.
Configurar como host local
Este paso es opcional, sobre todo si ha apuntado el nombre del dominio a la dirección IP de su servidor virtual privado.
Si desea probar su host virtual sin necesidad de conectarse al dominio, puede configurar un host local en su máquina.
Editar el fichero de hosts de su máquina.
sudo nano /etc/hosts
Sólo hay que añadir una línea en la que se indicará el nombre del dominio y la dirección IP a la que hay que ir.
Si quiere probar su página web desde su propia máquina, puede indicar la IP 127.0.0.1
# Host Database # # localhost is used to configure the loopback interface # when the system is booting. Do not change this entry. ## 127.0.0.1 localhost #Virtual Hosts 127.0.0.1 ejemplo.com ...
Esto resulta muy útil mientras se está desarrollando el sitio web antes de subirlo al servidor, de manera que se puede navegar y probar igual que si lo hace en real.
Para que los cambios hechos en el fichero /etc/hosts
surtan efecto, se puede ejecutar el siguiente comando:
sudo /etc/init.d/networking restart
Ahora ya puede abrir un navegador y escribir la siguiente URL.
http://www.ejemplo.com/
Aparecerá el contenido del fichero index.html
editado anteriormente.
Buenas noches! Excelente manera de explicar!! Y gracias por el aporte! Pero «sudo a2ensite ejemplo.com» me da Error: Site ejemplo.com does not exist!
Buenas Carlos,
El comando ‘sudo a2ensite ejemplo.com’ es para activar el virtual host que acabas de configurar.
Básicamente, hay que pasar el nombre del fichero que has editado.
En el caso de este tutorial, yo he utilizado ‘ejemplo.com’ pero tú tendrías que indicar el nombre del fichero que hayas creado con estos comandos:
sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/ejemplo.com
y
sudo nano /etc/apache2/sites-available/ejemplo.com
Un saludo,