Virtual Host y Dominios

Virtual Host y Dominios

Preparando los Directorios

Después de haber realizado uno de los procedimientos anteriores comenzaremos a crear el Host Virtual. En este ejemplo crearemos 2 host, los cuales son ejemplo.com y pruebas.com.


Asumiré que aplicaste el método de multiples usuario (Opción 1) pero la configuración la haremos con un solo usuario. Lo primero que debemos hacer es crear los directorios que contendrán las distintas paginas por cada sitio.

 $ mkdir -p ~/public_html/ejemplo.com/
 $ mkdir -p ~/public_html/pruebas.com/


Si por algún motivo decidiste hacer la opción para un único usuario (Opción 2 o 3) debes crear los directorios así:

# mkdir -p /var/www/ejemplo.com/public_html
# mkdir -p /var/www/pruebas.com/public_html

Luego darle permisos al directorio

# chown -R USUARIO:GRUPO /var/www/ejemplo.com/public_html
# chown -R USUARIO:GRUPO /var/www/pruebas.com/public_html
# chmod -R 755 /var/www

Para los casos de este ejemplo cambiar ~/public_html/ por /var/www/si deseas trabajar para único usuario, pero todo este manual esta enfocado a la opción 1.

Creando Páginas de Prueba

Creamos la página de prueba para el dominio ejemplo.com:

$ nano ~/public_html/ejemplo.com/index.html

Añadimos el Código

<html>
 <head>
  <title>Bienvenido a Ejemplo.com!</title>
 </head>
 <body>
  <h1>&Eacute;xito! El Virtual Host ejemplo.com esta funcionando!</h1>
 </body>
</html>

Guarda y Cierra el Archivo


Ahora en vez de volver a hacer lo mismo para el dominio prueba.com, reutilizaremos código y luego lo editaremos.

$ cp ~/public_html/ejemplo.com/index.html ~/public_html/pruebas.com/index.html
$ nano ~/public_html/pruebas.com/index.html

Reemplaza el texto Ejemplo.com por Pruebas.com, luego guarda y cierra.

Crear Archivos Virtual Host

Los archivos Virtual Host son archivos que contienen información y configuración específica para el dominio y que le indican al servidor Apache como responden a las peticiones de varios dominios. Apache (2.4 en adelante) incluye un archivo Virtual Host por defecto denominado 000-default.conf que podemos usar para saltarnos al punto.


Realizaremos una copia para trabajar sobre ella y crear nuestro Virtual Host para cada dominio. Iniciaremos con un dominio, configurarlo, copiarlo para el segundo dominio, y después realiza los ajustes necesarios. La configuración por defecto requiere que cada archivo de configuración de Virtual Host termine en .conf.


Empezando por copiar el archivo para el primer dominio:

# cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/ejemplo.com.conf


Abre el nuevo archivo con tu editor como usuario root:

# nano /etc/apache2/sites-available/ejemplo.com.conf

Este archivo se verá algo como esto (he removido los comentarios aquí para hacer el archivo más legible):

<VirtualHost *:80>
 ServerAdmin webmaster@localhost
 DocumentRoot /var/www/html
 ErrorLog ${APACHE_LOG_DIR}/error.log
 CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>


Primero, necesitamos cambiar la directiva ServerAdmin por un correo del administrador del sitio que pueda recibir correos.

ServerAdmin admin@ejemplo.com


Después de esto, necesitamos agregar dos directivas.

  • La primera llamada ServerName, que establece la base del dominio que debe coincidir para este Virtual Host. Esto será como tu dominio.
  • La segunda, llamada ServerAlias, determina nombres futuros que pueden coincidir y servirse como el nombre base o dominio principal. Esto es útil para host tipo www.
ServerName ejemplo.com
ServerAlias www.ejemplo.com


Lo que resta por cambiar para la configuración básica de un Virtual Host es la ubicación del directorio raíz para el dominio. Ya hemos creado lo que necesitamos, así que solo necesitamos modificar DocumentRootpara apuntarlo al directorio que hemos creado.

DocumentRoot /home/linux/public_html/ejemplo.com/

En total, nuestro archivo de Virtual Host debe verse así:

<VirtualHost *:80>
 ServerAdmin admin@ejemplo.com
 ServerName ejemplo.com
 ServerAlias www.ejemplo.com
 DocumentRoot /home/linux/public_html/ejemplo.com
 ErrorLog ${APACHE_LOG_DIR}/error.log
 CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Guarda y cierra el archivo.


Ahora que tenemos nuestro primer archivo Virtual Host configurado, podemos crear el segundo copiando el primero y realizando los cambios necesarios.

# cp /etc/apache2/sites-available/ejemplo.com.conf /etc/apache2/sites-available/pruebas.com.conf


Abre el nuevo archivo con privilegios root en tu editor:

# nano /etc/apache2/sites-available/pruebas.com.conf

Ahora tenemos que modificar todas las piezas de información para referirnos al segundo dominio. Cuando hayas terminado, deberá verse algo así:

<VirtualHost *:80>
 ServerAdmin admin@pruebas.com
 ServerName pruebas.com
 ServerAlias www.pruebas.com
 DocumentRoot /home/linux/public_html/pruebas.com
 ErrorLog ${APACHE_LOG_DIR}/error.log
 CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Guarda y cierra el archivo.

Habilitar los nuevos archivos Virtual Host

Ahora que hemos creado nuestros archivos virtual hosts, debemos habilitarlos. Apache incluye herramientas que nos permiten hacer esto. Podemos usar la herramienta a2ensite para habilitar cada uno de nuestros sitios haciendo esto:

# a2ensite ejemplo.com.conf
# a2ensite pruebas.com.conf


Cuando hayas concluido, deberás reiniciar Apache para asegurarte de que tus cambios surtan efecto:

# service apache2 restart
* Restarting web server apache2
 AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message

Este mensaje no afecta nuestro sitio.

Configurar Archivos Locales (opcional)

Si aún no estás utilizando nombres de dominio de tu propiedad para este procedimiento y utilizaste dominios ejemplo en su lugar, puedes al menos hacer pruebas de funcionalidad de este proceso modificando temporalmente el archivo hosts de tu computadora local (equipo cliente).


Esto interceptará cualquier petición a los dominios que configures y apunten a tu VPS (Servidor Privado Virtual), solo si estas utilizando dominios registrados. Esto solo funciona a través de tu computadora, y es simplemente útil para propósitos de prueba.


Asegúrate de estar trabajando en tu computadora local para los siguientes pasos y no en tu VPS. Deberás conocer la contraseña del administrador o ser miembro del grupo administrativo.


Si estas en una Mac o una máquina con Linux, edita tu archivo local con privilegios de administrador escribiendo, recuerda hacer esto en el equipo cliente, no en el servidor:

# nano /etc/hosts


Si estás en una máquina con Windows, puedes buscar las instrucciones para modificar tu archivo hosts en http://support.microsoft.com/kb/923947.


Los detalles que necesitas agregar son la IP pública de tu VPS seguido del dominio que deseas apuntar a ese VPS. Para los dominios que utilizamos en esta guía, asumiremos que la IP de nuestro VPS es 10.1.15.148, podemos agregar las siguientes líneas al final del archivo hosts:

10.1.15.148 ejemplo.com
10.1.15.148 pruebas.com

Guarda y cierra el archivo.


Esto apuntará directamente cualquier petición para ejemplo.com y pruebas.com en nuestra computadora y enviarlas a nuestro servidor en 10.1.15.148. Esto es lo que queremos si no somos propietarios de esos dominios aún, solo con fines de prueba para nuestros Virtual Hosts.


Luego desde el mismo equipo cliente, escribe la dirección url de la pagina y verás un resultado como el siguiente.