Cómo configurar hosts virtuales Apache en Ubuntu 16.04

Introducción

Índice
  1. Introducción
  • Prerrequisitos
  • Paso 1: Creación de la estructura del directorio
  • Paso 2: Concesión de permisos
  • Paso 3: creación de páginas de demostración para cada host virtual
  • Paso 4: creación de nuevos archivos de host virtual
    1. Creación del primer archivo de host virtual
    2. Copiar el primer host virtual y personalizarlo para el segundo dominio
  • Paso 5: Habilitación de los nuevos archivos del host virtual
  • Paso 6: Configuración del archivo de hosts locales (opcional)
  • Paso 7: Prueba de los resultados
  • Conclusión
  • El servidor web Apache es la forma más popular de ofrecer 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 sus 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 denomina virtual host.

    Estas designaciones permiten al administrador utilizar un servidor para alojar varios dominios o sitios desde una única interfaz o IP mediante un mecanismo de coincidencia. Esto es importante para cualquiera que desee alojar más de un sitio desde un único servidor.

    Cada dominio que se configure dirigirá al visitante a un directorio específico que contiene la información de ese sitio, sin indicar nunca que el mismo servidor también es responsable de otros sitios. Este esquema es ampliable sin ningún límite de software siempre que su servidor pueda soportar la carga.

    En esta guía, le explicaremos cómo configurar hosts virtuales Apache en un servidor Ubuntu 16.04. Durante este proceso, aprenderá a ofrecer distintos contenidos a distintos visitantes según los dominios que soliciten.

    Prerrequisitos

    Antes de comenzar este tutorial, debe crear un usuario no root habilitado para sudo como se describe en los pasos 1 a 4 aquí.

    También necesitará tener instalado Apache para poder seguir estos pasos. Si aún no lo ha hecho, puede instalar Apache en su servidor mediante apt-get:

    1. sudo apt-get update
    2. sudo apt-get install apache2

    Una vez completados estos pasos, podemos comenzar.

    Para los fines de esta guía, nuestra configuración creará un host virtual para example.comy otro para test.com. Se hará referencia a estos en toda la guía, pero debe sustituir sus propios dominios o valores a medida que avanza.

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

    Paso 1: Creación de la estructura del directorio

    El primer paso que vamos a dar es crear una estructura de directorio que contendrá los datos del sitio que serviremos a los visitantes.

    Nuestro document rootdirectorio (el directorio de nivel superior que Apache analiza para encontrar contenido para ofrecer) se configurará en directorios individuales dentro del /var/wwwdirectorio. Crearemos un directorio aquí para ambos hosts virtuales que planeamos crear.

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

    Por ejemplo, para nuestros sitios, vamos a crear nuestros directorios de esta manera:

    1. sudo mkdir -p /var/www/example.com/public_html
    2. sudo mkdir -p /var/www/test.com/public_html

    Las porciones en rojo representan los nombres de dominio que queremos servir desde nuestro VPS.

    Paso 2: Concesión de permisos

    Ahora tenemos la estructura de directorios para nuestros archivos, pero son propiedad de nuestro usuario root. Si queremos que nuestro usuario normal pueda modificar archivos en nuestros directorios web, podemos cambiar la propiedad haciendo lo siguiente:

    1. sudo chown -R $USER:$USER /var/www/example.com/public_html
    2. sudo chown -R $USER:$USER /var/www/test.com/public_html

    La $USERvariable tomará el valor del usuario con el que está conectado actualmente cuando presione ENTER. Al hacer esto, nuestro usuario habitual ahora es propietario de los public_htmlsubdirectorios donde almacenaremos nuestro contenido.

    También deberíamos modificar un poco nuestros permisos 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 servirse correctamente:

    1. sudo chmod -R 755 /var/www

    Su servidor web ahora debería tener los permisos que necesita para servir contenido y su usuario debería poder crear contenido dentro de las carpetas necesarias.

    Paso 3: creación de páginas de demostración para cada host virtual

    Ya tenemos lista nuestra estructura de directorios. Vamos a crear contenido para ofrecer.

    Solo vamos a hacer una demostración, por lo que nuestras páginas serán muy simples. Simplemente vamos a crear una index.htmlpágina para cada sitio.

    Empecemos con example.com. Podemos abrir un index.htmlarchivo en nuestro editor escribiendo:

    1. nano /var/www/example.com/public_html/index.html

    En este archivo, crea un documento HTML simple que indique el sitio al que está conectado. El archivo tiene este aspecto:

    /var/www/example.com/public_html/index.html

    html  head    titleWelcome to Example.com!/title  /head  body    h1Success!  The example.com virtual host is working!/h1  /body/html

    Guarde y cierre el archivo cuando haya terminado.

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

    1. cp /var/www/example.com/public_html/index.html /var/www/test.com/public_html/index.html

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

    1. nano /var/www/test.com/public_html/index.html

    /var/www/test.com/public_html/index.html

    html  head    titleWelcome to Test.com!/title  /head  body h1Success!  The test.com virtual host is working!/h1  /body/html

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

    Paso 4: creación de nuevos archivos de host virtual

    Los archivos de host virtual 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 incluye un archivo de host virtual predeterminado llamado 000-default.confque podemos usar como punto de partida. Lo copiaremos 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 ajustes necesarios. La configuración predeterminada de Ubuntu requiere que cada archivo de host virtual termine en .conf.

    Creación del primer archivo de host virtual

    Comience copiando el archivo del primer dominio:

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

    Abra el nuevo archivo en su editor con privilegios de root:

    1. sudo nano /etc/apache2/sites-available/example.com.conf

    El archivo se verá así (se han eliminado los comentarios para que el archivo sea más accesible):

    /etc/apache2/sitios-disponibles/example.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 puede ver, no hay mucho aquí. Personalizaremos los elementos aquí para nuestro primer dominio y agregaremos algunas directivas adicionales. Esta sección de host virtual coincide con cualquier solicitud que se realice en el puerto 80, el puerto HTTP predeterminado.

    Primero, necesitamos cambiar la ServerAdmindirectiva a un correo electrónico a través del cual el administrador del sitio pueda recibir correos electrónicos.

    ServerAdmin admin@example.com

    Después de esto, necesitamos agregar dos directivas. La primera, llamada ServerName, establece el dominio base que debe coincidir con esta definición de host virtual. Lo más probable es que sea su dominio. La segunda, llamada ServerAlias, define otros nombres que deben coincidir como si fueran el nombre base. Esto es útil para hacer coincidir los hosts que definió, como www:

    ServerName example.comServerAlias www.example.com

    Lo único que tenemos que cambiar para un archivo de host virtual básico es la ubicación de la raíz del documento para este dominio. Ya hemos creado el directorio que necesitamos, así que solo tenemos que modificar la DocumentRootdirectiva para que refleje el directorio que hemos creado:

    DocumentRoot /var/www/example.com/public_html

    En total, nuestro archivo virtualhost debería verse así:

    /etc/apache2/sitios-disponibles/example.com.conf

    VirtualHost *:80    ServerAdmin admin@example.com    ServerName example.com    ServerAlias www.example.com    DocumentRoot /var/www/example.com/public_html    ErrorLog ${APACHE_LOG_DIR}/error.log    CustomLog ${APACHE_LOG_DIR}/access.log combined/VirtualHost

    Guarde y cierre el archivo.

    Copiar el primer host virtual y personalizarlo para el segundo dominio

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

    Comience copiándolo:

    1. sudo cp /etc/apache2/sites-available/example.com.conf /etc/apache2/sites-available/test.com.conf

    Abra el nuevo archivo con privilegios de root en su editor:

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

    Ahora debes modificar todos los datos para que hagan referencia a tu segundo dominio. Cuando hayas terminado, puede que se parezca a esto:

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

    VirtualHost *:80    ServerAdmin admin@test.com    ServerName test.com    ServerAlias www.test.com    DocumentRoot /var/www/test.com/public_html    ErrorLog ${APACHE_LOG_DIR}/error.log    CustomLog ${APACHE_LOG_DIR}/access.log combined/VirtualHost

    Guarde y cierre el archivo cuando haya terminado.

    Paso 5: Habilitación de los nuevos archivos del host virtual

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

    Podemos utilizar la a2ensiteherramienta para habilitar cada uno de nuestros sitios de esta manera:

    1. sudo a2ensite example.com.conf
    2. sudo a2ensite test.com.conf

    A continuación, deshabilite el sitio predeterminado definido en 000-default.conf:

    1. sudo a2dissite 000-default.conf

    Cuando haya terminado, deberá reiniciar Apache para que estos cambios surtan efecto:

    1. sudo systemctl restart apache2

    Paso 6: Configuración del archivo de hosts locales (opcional)

    Si no ha estado utilizando nombres de dominio reales de su propiedad para probar este procedimiento y ha estado utilizando algunos dominios de ejemplo en su lugar, al menos puede probar la funcionalidad de este proceso modificando temporalmente el hostsarchivo en su computadora local.

    Esto interceptará todas las solicitudes de los dominios que haya configurado y las dirigirá a su servidor, tal como lo haría el sistema DNS si estuviera utilizando dominios registrados. Sin embargo, esto solo funcionará desde su computadora y es simplemente útil para fines de prueba.

    Asegúrese de que está trabajando en su computadora local para realizar estos pasos y no en su servidor. Deberá conocer la contraseña administrativa de la computadora o ser miembro del grupo administrativo.

    Si está en una computadora Mac o Linux, edite su archivo local con privilegios administrativos escribiendo:

    1. sudo nano /etc/hosts

    Si está en una máquina Windows, puede encontrar instrucciones sobre cómo modificar su archivo de hosts aquí.

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

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

    /etc/hosts

    127.0.0.1   localhost127.0.1.1   guest-desktop203.0.113.10 example.com203.0.113.10 test.com

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

    Guarde y cierre el archivo.

    Paso 7: Prueba de los resultados

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

    http://example.com

    Deberías ver una página como esta:

    De igual forma si puedes visitar tu segunda página:

    http://test.com

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

    Si ambos sitios funcionan bien, habrás configurado exitosamente dos hosts virtuales en el mismo servidor.

    Si modificó el archivo de hosts de su computadora personal, es posible que desee eliminar las líneas que agregó ahora que verificó que su configuración funciona. Esto evitará que su archivo de hosts se llene con entradas que en realidad no son necesarias.

    Si necesita acceder a esto a largo plazo, considere comprar un nombre de dominio para cada sitio que necesite y configurarlo para que apunte a su servidor VPS.

    Conclusión

    Si siguió los pasos, ahora debería tener un solo servidor que gestione dos nombres de dominio independientes. Puede ampliar este proceso siguiendo los pasos que describimos anteriormente para crear 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 crear tantos como tu servidor sea capaz de manejar.

    SUSCRÍBETE A NUESTRO BOLETÍN 
    No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Subir

    Este sitio web utiliza cookies para mejorar tu experiencia mientras navegas por él. Este sitio web utiliza cookies para mejorar tu experiencia de usuario. Al continuar navegando, aceptas su uso. Mas informacion