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
- 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
- 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
- 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