Mi Blog
👉 Cómo configurar Virtual Hosts de Apache en Ubuntu Server

Cómo configurar Virtual Hosts de Apache en Ubuntu Server

 
(5 votos)

En este nuevo tutorial os enseñaré lo fácil que resulta configurar el servidor Web Apache para permitir varios dominios/Virtual Hosts y conseguir minimizar tanto los costes € como las tareas de administración sobre los servidores. La configuración la he realizado sobre un equipo con GNU/Linux Ubuntu Server, pero podemos extrapolar casi el 100% de los pasos a cualquier otra distribución incluso a otro Sistema Operativo como puede ser Microsoft Windows.

⬇️ Compra en Amazon el hardware que utilizo ⬇️

🔥 ¡DESCÚBRELOS! 🔥

 

 

El servidor Web por excelencia es Apache. Aunque a día de hoy existen multitud de alternativas, como lighttpd, nginx, Tomcat, IIS ... Apache es sin duda líder en servir las Webs en Internet e Intranets.

¿Qué es un Virtual Host?

Imaginemos uno de los miles de proveedores de Hosting que hay en el mundo. Cada hosting tiene N clientes y esos clientes quieren tener su Web alojada en los servidores del proveedor. Los Virtual Hosts posibilitan a los servidores Web de gestionar N páginas Webs con dominios diferentes pero con una única IP. Por ejemplo, si configuramos un servidor Apache con 2 Virtual Hosts www.ejemplo1.com y www.ejemplo2.com, podemos alojar dichas páginas en un único servidor con la IP 80.33.120.201.

Y te preguntarás, ¿cuando pido una de esas 2 páginas, como sabe el servidor a que página quiero acceder si la IP resuelta por el DNS es la misma? Bien, la solución son los Virtual Host. ¡Lo has adivinado! En los paquetes TCP que se envían al servidor Web, se especifica el destino al que queremos acceder y es el servidor Web quien analiza esas peticiones y nos autoriza para acceder al contenido de www.ejemplo1.com ó de www.ejemplo2.com.

Cada dominio que configuremos, tendrá asociado un directorio diferente en el cual irá almacenado su contenido. Podemos crear tantos Virtual Hosts como queramos, siempre en función de la carga que soporte el Servidor Web y de la configuración Apache que hagamos. Se podría decir que "no hay limites".

 

 

1.- ELEMENTOS UTILIZADOS EN ESTE TUTORIAL

  • [Servidor Web] - GNU/Linux Ubuntu Server 16.04
  • [Cliente Web] - Windows 7

 

 

2.- INSTALACIÓN DEL SERVIDOR WEB APACHE

Lo primero, como es habitual en todos los tutoriales, es instalar el paquete base, en nuestro caso será Apache2.

Instalaremos el paquete con usuario root ó con un usuario con permisos de sudo. Actualizaremos previamente nuestros repositorios:

# apt-get update
# apt-get install apache2

 

 

3.- ESTRUCTURA Y PERMISOS DE DIRECTORIOS

Por defecto, la instalación de Apache crea un directorio principal llamado /var/www/html/ donde irán alojado el contenido principal del la única página que se crea por defecto en la instalación. En otras distribuciones que no sea Ubuntu, el directorio puede cambiar, aunque generalmente está en /var/www/. Para este tutorial usaremos 2 nombres de dominio de ejemplo, por ejemplo: www.raul-ejemplo1.com y www.raul-ejemplo2.com , ambos alojados en el mismo servidor y gestionados por un único servidor Web.

Crearemos 2 directorios, uno para cada uno de los dominios de ejemplo:

# mkdir /var/www/html/raul-ejemplo1.com/public_html
# mkdir /var/www/html/raul-ejemplo2.com/public_html

Debemos asegurarnos que los directorios tienen como propietario www-data y grupo www-data. Por ejemplo en Red Hat estos usuarios son Apache y Apache, cuidado en este paso:

# chown -R www-data.www-data /var/www/html/raul-ejemplo1.com
# chown -R www-data.www-data /var/www/html/raul-ejemplo2.com

Para asegurarnos que nadie, excepto el propietario www-data pueda escribir en el (los) directorios, cambiaremos los permisos de ambos directorios:

# chmod -R 0755 /var/www/html/raul-ejemplo1.com
# chmod -R 0755 /var/www/html/raul-ejemplo2.com

Dentro de cada uno de los directorios (public_html), podemos crear una página Web diferente para visitarla a posteriori, pero lo que yo haré será descargar el paquete de instalación de Wordpress y descomprimirlo en cada directorio con el fin de emular 2 "sites" web.

  • raul-ejemplo1.com = Wordpress1
  • raul-ejemplo2.com = Wordpress2

Como puede verse, las direcciones para entrar a los 2 sites son bastante "feas": http://192.168.145.212/raul-ejemplo1.com/public_html/ y http://192.168.145.212/raul-ejemplo2.com/public_html/:

VirtualHost Apache

2 instalaciones diferentes de Wordpress

 

 

4.- CONFIGURACIÓN DEL VIRTUALHOST 1

Los archivos Virtual Host contienen la información necesaria para el (los) dominios en cuestión y le indican al servidor Web Apache como deben responder a las peticiones realizadas a dicho(s) dominio(s).

Por defecto, Apache incluye un archivo Virtual Host llamado 000-default.conf y sobre el cual podemos basar nuestra configuración inicial. Por tanto el primer paso será copiar dicho fichero para el primer dominio www.raul-ejemplo1-com:

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

El archivo raul-ejemplo1.com (sin comentarios) tiene el siguiente aspecto:


ServerAdmin webmaster@localhost
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

Editaremos el fichero y lo configuraremos para que se adapte a nuestras necesidades. Mostraré como queda el fichero final y explicaré las líneas importantes que hay que configurar en él:


ServerAdmin Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
ServerName raul-ejemplo1.com
ServerAlias www.raul-ejemplo1.com
DocumentRoot /var/www/html/raul-ejemplo1.com/public_html
ErrorLog ${APACHE_LOG_DIR}/raul-ejemplo1_error.log
CustomLog ${APACHE_LOG_DIR}/raul-ejemplo1_access.log combined

  • ServerAdmin: Indicamos el email del administrador
  • ServerName: Indicamos el nombre del dominio
  • ServerAlias: Indicamos el nombre completo del dominio
  • DocumentRoot: Indicamos el PATH al directorio principal donde se ubican los ficheros Web.
  • ErrorLog: Ruta y nombre del fichero de error.
  • CustomLog: Ruta y nombre del fichero de accesos.

Guardamos el fichero.

 

 

5.- CONFIGURACIÓN DEL VIRTUALHOST 2

Copiaremos el fichero de configuración del dominio raul-ejemplo1.com y modificaremos los campos para adaptarlos al segundo dominio:

# cp /etc/apache2/sites-available/raul-ejemplo1.com.conf /etc/apache2/sites-available/raul-ejemplo2.com.conf

El fichero de configuración del segundo dominio raul-ejemplo2.com tendrá el siguiente aspecto:


ServerAdmin Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
ServerName raul-ejemplo2.com
ServerAlias www.raul-ejemplo2.com
DocumentRoot /var/www/html/raul-ejemplo2.com/public_html
ErrorLog ${APACHE_LOG_DIR}/raul-ejemplo2_error.log
CustomLog ${APACHE_LOG_DIR}/raul-ejemplo2_access.log combined

Para finalizar, guardaremos el fichero .

 

 

6.- HABILITAR LOS 2 NUEVOS SITES

Para activar los 2 nuevos "sites", debemos recurrir a la herramienta de Apache a2ensite (Apache Enable Sites). Activaremos los 2 dominios con los siguientes comandos y después recargaremos la configuración de Apache:

# a2ensite raul-ejemplo1.com.conf
# a2ensite raul-ejemplo2.com.conf
# /etc/init.d/apache2 reload

Virtualhost ApacheActivación y recarga de los 2 nuevos sites

 

 

7.- COMPROBACIÓN DE LOS VIRTUALHOSTS SIN SERVIDOR DNS

Para probar si nuestro servidor está reconociendo los 2 VirtualHost nuevos y no tenemos un servidor de DNS que nos resuelva dichos dominios, podemos crear 2 nuevas entradas fijas de forma manual en el fichero "hosts" de nuestro equipo. Para el caso de los Windows el fichero es c:\Windows\System32\Drivers\etc\lmhosts y en los GNU/Linux /etc/hosts.

Deberemos añadir las lineas siguientes:

192.168.145.212 raul-ejemplo1.com    
192.168.145.212 www.raul-ejemplo1.com
192.168.145.212 raul-ejemplo2.com
192.168.145.212 www.raul-ejemplo2.com

La dirección IP de mi servidor Web es 192.168.145.212. Cambia esa IP por la de tu servidor Web.

Virtualhost Apache

Virtualhost funcionando

 

 

8.- COMPROBACIÓN DE LOS VIRTUALHOSTS CON UN SERVIDOR DNS

Para configurar un servidor DNS con los 2 nuevos dominios, hay que instalar el servidor Bind9 y añadir las entradas de los 2 Virtual Host. En la siguiente URL puedes encontrar un manual de como instalar tu propio servidor de DNS:

https://www.raulprietofernandez.net/blog/gnu-linux/como-instalar-un-servidor-de-dns-en-gnu-linux-debian

 

 

ENJOY!


Acerca de Mi

RPF

Soy Ingeniero Téc. Industrial Mecánico, Administrador de Sistemas Informáticos, Desarrollador de Aplicaciones Informaticas Web, Técnico Superior en PRL, Experto en Energías Renovables... y trabajo actualmente como Senior DevOPS en HP SCDS.

Contactar conmigo

Dirección: León, España

E-Mail: Contactar

Web: https://www.raulprietofernandez.net

Skype: raul.lnx

APÚNTATE GRATIS

VIP RPF
Entra en la Comunidad VIP y consigue acceso a las descargas en PDF, Trucos y Videotutoriales ocultos y mucho más... ¡Muy Pronto!
AVISO DE COOKIES

Esta página web utiliza cookies propias y de terceros para fines funcionales (permitir la navegación web), para optimizar la navegación y personalizarla según tus preferencias asícomo para mostrarte publicidad en base a tu perfil de navegación (p.e páginas visitadas).

Privacidad