Cómo configurar los virtual hosts de Apache en Ubuntu 14.04 LTS

Introducción

El servidor web Apache es la forma más popular de mostrar contenido web en Internet. Representa más de la mitad de todos los sitios web activos en Internet y es extremadamente potente y flexible.

Apache divide su funcionalidad y componentes en unidades individuales que se pueden personalizar y configurar de forma independiente. La unidad básica que describe un sitio o dominio individual se llama a virtual host o host virtuales.

Estas designaciones le permiten al administrador usar un servidor para alojar múltiples dominios o sitios fuera de una sola interfaz o IP mediante un mecanismo de coincidencia. Esto es relevante para cualquiera que busque hospedar más de un sitio en un solo VPS.

Cada dominio que está configurado dirigirá al visitante a un directorio específico que contiene la información de ese sitio, nunca indicando que el mismo servidor también es responsable de otros sitios. Este esquema es expandible sin ningún límite de software siempre que tu servidor pueda administrar la carga.

En esta guía, te mostraremos cómo configurar los virtual host de Apache en un VPS de Ubuntu 14.04. Durante este proceso, aprenderás cómo proporcionar contenido diferente a diferentes visitantes según los dominios que solicitan.

Prerrequisitos

Antes de comenzar este tutorial, debe crear un usuario no root

También debersá tener instalado Apache para poder realizar estos pasos. Si aún no lo ha hecho, puedes instalar Apache en tu servidor a través de apt-get:

Después de completar estos pasos, podemos comenzar.

Para los fines de esta guía, mi configuración será un host virtual example.com y otro para test.com. Estos serán referenciados en toda la guía, pero debes sustituir tus propios dominios o valores al mismo tiempo que sigues los pasos.

Si no tienes dominios disponibles para practicar, puedes usar valores ficticios.

Te mostraremos cómo editar tu archivo de hosts locales más adelante para probar la configuración si estás usando valores ficticios. Esto te permitirá probar tu configuración desde la computadora de tu hogar, aunque su contenido no estará disponible a través del nombre de dominio para otros visitantes.

Paso Uno – Crear la Estructura del Directorio

El primer paso que vamos a tomar es hacer una estructura de directorios que contendrá los datos del sitio que mostraremos a los visitantes.

Nuestro document root (el directorio de nivel superior que Apache busca para encontrar contenido para mostrar) se configurará en directorios individuales debajo del directorio /var/www. Aquí crearemos un directorio para los dos virtual host que planeamos hacer.

Dentro de cada uno de estos directorios, crearemos una carpeta public_html que contendrá nuestros archivos reales. Esto nos da cierta flexibilidad en nuestro hosting.

Por ejemplo, para nuestros sitios, vamos a hacer que nuestros directorios sean así:

Las partes en rojo representan los nombres de dominio que queremos mostrar desde nuestro VPS.

Paso dos – Conceder permisos

Ahora tenemos la estructura de directorios para nuestros archivos, pero son propiedad de nuestro usuario root. Si queremos que nuestro usuario habitual pueda modificar los archivos de nuestros directorios web, podemos cambiar la propiedad al hacer esto:

La variable $USER tomará el valor del usuario con el que has iniciado sesión al presionar “ENTER”. Al hacer esto, nuestro usuario habitual ahora posee los subdirectorios public_html donde almacenaremos nuestro contenido.

También deberíamos modificar nuestros permisos un poco para garantizar que se permita el acceso de lectura al directorio web general y a todos los archivos y carpetas que contiene para que las páginas puedan mostrarse correctamente:

Tu servidor web ahora debe tener los permisos que necesita para mostrar contenido, y tu usuario debe poder crear contenido dentro de las carpetas necesarias.

Paso tres: crear páginas de prueba para cada virtual host

Tenemos nuestra estructura de directorios en su lugar. Vamos a crear algunos contenidos para mostrar.

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

Vamos a empezar con example.com. Podemos abrir un archivo index.html en nuestro editor escribiendo:

En este archivo, crea un documento HTML simple que indica el sitio al que estás conectado. Mi archivo se ve así:

Guarda y cierra el archivo cuando hayas terminado.

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

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

Debes guardar y cerrar este archivo también. Ahora tiene las páginas necesarias para probar la configuración del host virtual.

Paso cuatro – Crear nuevos archivos de virtual host

Los archivos de virtual host son los archivos que especifican la configuración real de nuestros hosts virtuales y dictan cómo el servidor web Apache responderá a varias solicitudes de dominio.

Apache viene con un archivo de host virtual predeterminado llamado 000-default.conf que podemos usar como punto de partida. Vamos a copiarlo para crear un archivo de host virtual para cada uno de nuestros dominios.

Comenzaremos con un dominio, lo configuraremos, lo copiaremos para nuestro segundo dominio y luego haremos los pocos ajustes necesarios. La configuración predeterminada de Ubuntu requiere que cada archivo de virtual host termine en .conf.

Crear el primer archivo de host virtual

Inicia copiando el archivo para el primer dominio:

Abre el nuevo archivo en tu editor con privilegios de root:

El archivo tendrá un aspecto similar a este (he eliminado los comentarios aquí para hacer que el archivo sea más accesible):

Como puedes ver, no hay mucho aquí. Aquí personalizaremos los elementos para nuestro primer dominio y agregaremos algunas directivas adicionales. Esta sección de host coincide virtual con cualquier solicitud que se realice en el puerto 80, el puerto HTTP predeterminado.

Primero, debemos cambiar la directiva ServerAdmin a un correo electrónico por el cual el administrador del sitio puede recibir correos electrónicos.

Después de esto, tenemos que añadir dos directivas. El primero, llamado ServerName, establece el dominio base que debe coincidir con esta definición de host virtual. Este probablemente será tu dominio. El segundo, llamado ServerAlias, define otros nombres que deben coincidir como si fueran el nombre base. Esto es útil para hacer coincidir los hosts que definiste, como www:

Lo único que necesitamos cambiar para un archivo de virtual host básico es la ubicación del root del documento para este dominio. Ya creamos el directorio que necesitamos, así que solo tenemos que modificar la directiva DocumentRoot para reflejar el directorio que creamos:

En resumen, nuestro archivo de host virtual debería verse así:

Guarda y cierra el archivo.

Copiar el primer virtual host y personalizar para el segundo dominio

Ahora que hemos establecido nuestro primer archivo de virtual host, podemos crear nuestro segundo copiando ese archivo y ajustándolo según sea necesario.

Inicia por copiarlo:

Abre el nuevo archivo con privilegios de root en tu editor:

sudo nano /etc/apache2/sites-available/test.com.conf

Ahora necesita modificar toda la información para hacer referencia a tu segundo dominio. Cuando hayas terminado, puede verse algo como esto:

Guarda y cierra el archivo cuando hayas terminado.

Paso cinco – Habilitar los nuevos archivos de virtual host

Ahora que hemos creado nuestros archivos de virtual host, debemos habilitarlos. Apache incluye algunas herramientas que nos permiten hacer esto.

Podemos usar la herramienta a2ensite para habilitar cada uno de nuestros sitios de esta manera:

Cuando hayas terminado, debes reiniciar Apache para que estos cambios surtan efecto:

Lo más probable es que veas un mensaje que diga algo similar a:

Este es un mensaje inofensivo que no afecta a nuestro sitio.

Paso seis – Configurar archivo de hosts locales (opcional)

Si no has estado usando los nombres de dominio reales que posees para probar este procedimiento y en su lugar has estado usando algunos dominios de ejemplo, al menos puedes probar la funcionalidad de este proceso modificando temporalmente el archivo hosts en tu computadora local.

Esto interceptará cualquier solicitud de los dominios que configuraste y los dirigirá a tu servidor VPS, tal como lo haría el sistema DNS si estuvieras usando dominios registrados. Sin embargo, esto solo funcionará desde tu computadora y es simplemente útil para propósitos de prueba.

Asegúrate de estar operando en tu computadora local para estos pasos y no en tu servidor VPS. Deberás conocer la contraseña administrativa de la computadora o, de lo contrario, ser miembro del grupo administrativo.

Si te encuentras en una computadora Mac o Linux, tienes que editar tu archivo local con privilegios administrativos escribiendo:

Si estás en una máquina con Windows, puedes encontrar instrucciones sobre cómo modificar tu archivo de hosts aquí.

Los detalles que debes agregar son la dirección IP pública de tu servidor de VPS seguido del dominio que deseas usar para llegar a ese VPS.

Para los dominios que usé en esta guía, asumiendo que mi dirección IP de VPS es 111.111.111.111, podría agregar las siguientes líneas al final de mi archivo de hosts:

Esto dirigirá las solicitudes de example.com y test.com en nuestra computadora y las enviará a nuestro servidor en 111.111.111.111. Esto es lo que queremos si no somos realmente los propietarios de estos dominios para probar nuestros hosts virtuales.

Guarda y cierra el archivo.

Paso Siete – Prueba tus resultados

Ahora que tienes tus virtual hosts configurados, puedes probar su configuración fácilmente yendo a los dominios que configuraste en tu navegador web:

Deberías ver una página que se ve así:

Igualmente, puedes visitar tu segunda página:

Verás el archivo que creaste para tu segundo sitio:

Si ambos sitios funcionan bien, has configurado con éxito dos virtual hosts en el mismo servidor.

Si configuraste el archivo de hosts de la computadora de tu hogar, es posible que desees eliminar las líneas que agregaste ahora que verificaste que tu configuración funciona. Esto evitará que tu archivo de hosts se llene con entradas que no son realmente necesarias.

Si necesitas acceder a este largo plazo, considera comprar un nombre de dominio para cada sitio que necesites y configurarlo para que apunte a tu servidor de VPS.

Conclusión

Si seguiste paso a paso, ahora deberías tener un solo servidor que maneje dos nombres de dominio separados. Puedes expandir este proceso siguiendo los pasos que describí anteriormente para hacer hosts virtuales adicionales.

No hay límite de software en la cantidad de nombres de dominio que Apache puede manejar, así que siéntete libre de hacer tantos como tu servidor sea capaz de administrar.