Es una solución para poder tener  varios dominios con una sola ip.

Mediante los virtual host en Apache podemos  configurar nuestro servidor para servir a múltiples dominios mediante el uso de máquinas virtuales en resumen esto quiere decir que en una misma máquina con una instancia de Apache, es posible tener los diferentes dominios

Cada dominio que es configurado apuntará al visitante a una carpeta específica que contiene la información del sitio, nunca indicará que el mismo servidor es responsable de otros sitios

Requisitos previos

Simplemente hay que tener instalado el servidor Apache. Para ello se ejecutan los siguientes comandos:

sudo apt-get update

sudo apt-get install apache2

  1. Crear los directorios

El primer paso es crear los directorios donde se encontrará el código de las aplicaciones web:

sudo mkdir -p /var/www/html/directorio1.com

sudo mkdir -p /var/www/html/directorio2.com

  1. Permisos

El usuario root es ahora mismo el propietario de los directorios que acabamos de crear, por lo que para poder modificar los archivos contenidos en dichos directorios con nuestro usuario es necesario dar permisos:

sudo chown -R $USER:$USER /var/www/html/directorio1.com

sudo chown -R $USER:$USER /var/www/html/directorio2.com

La variable $USER contiene el valor del usuario que está ejecutando la acción. Aparte de esto, para poder acceder a las páginas correctamente, conviene dar otros permisos a la carpeta raíz del servidor:

sudo chmod -R 755 /var/www/html

  1. Crear los Virtual Host

Los archivos Virtual Host contienen información específica para cada dominio. Ya existe un archivo de configuración por defecto que utilizaremos como plantilla para crear los archivos de directorio1.com y directorio2.com:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/directorio1.com.conf

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/directorio2.com.conf

Tras eliminar los comentarios de los archivos para hacerlos más legibles, quedarán ambos así:

nano /etc/apache2/sites-available/directorio2.com.conf

<VirtualHost *:80>

ServerAdmin webmaster@localhost

DocumentRoot /var/www/html

ErrorLog ${APACHE_LOG_DIR}/error.log

CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

Como podéis observar, ambos apuntan al directorio /var/www/html, por lo que hay que hacer que apunten a los directorios creados anteriormente. En el archivo de configuración directorio1.com.conf, cambiamos el DocumentRoot a DocumentRoot /var/www/html/directorio1.com y directorio2.com.conf a DocumentRoot /var/www/html/directorio2.com. Además de esto, hay que modificar las opciones ServerAdmin, ServerName y ServerAlias para que cada uno responda a un dominio diferente. El archivo de configuración de directorio1.com quedará de la siguiente manera:

<VirtualHost *:80>

ServerAdmin webmaster@localhost

ServerName directorio1.com

ServerAlias www.directorio1.com

DocumentRoot /var/www/html/directorio1.com

ErrorLog ${APACHE_LOG_DIR}/error.log

CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

Y el de directorio2.com será el siguiente:

<VirtualHost *:80>

ServerAdmin webmaster@localhost

ServerName directorio2.com

ServerAlias www.directorio2.com

DocumentRoot /var/www/html/directorio2.com

ErrorLog ${APACHE_LOG_DIR}/error.log

CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

Habilitar los nuevos Virtual Host

Para habilitar los nuevos Virtual Host utilizaremos la herramienta a2ensite de Apache:

sudo a2ensite directorio1.com.conf

sudo a2ensite directorio2.com.conf

Vamos a realizar algunas pruebas

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

sudo service apache2 restar

Actualmente tenemos la estructura en su lugar. Vamos a crear contenido para mostrar.

Solo vamos a hacer una demostración, así que nuestras páginas serán muy simples. Solo crearemos un archivo index.html para cada sitio.

Empecemos con directorio1.com Podemos abrir un archivo index.html mediante un editor escribiendo:

nano /var/www/html/directorio1.com/index.html

En este archivo, crea un documento HTML simple que indicara que el sitio está conectado. Mi archivo quedó así:

<html>

<head>

<title>Bienvenido Antonio Rodríguez Castro!</title>

</head>

<body>

<h1>Éxito! El Virtual Host Antonio Rodríguez Castro esta funcionando!</h1>

</body>

</html>

Guarda y cierra el archivo cuando termines.

Podemos copiar este archivo y usarlo de base para nuestro segundo sitio escribiendo:

cp /var/www/html/directorio1.com/index.html /var/www/html/diectorio2.com/index.html

Ahora podemos abrir el archivo y modificar la información relevante:

nano /var/www/html/index.html

<html>

<head>

<title>Bienvenido a Antonio Rodríguez</title>

</head>

<body>

<h1>Éxito! El Virtual Host creo que está funcionando!</h1>

</body>

</html>

 

Ahora mismo, si accediésemos a directorio1.com y directorio2.com