Cómo configurar hosts virtuales Apache en Ubuntu 20.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 predeterminadas para cada host virtual
  • Paso 4: creación de nuevos archivos de host virtual
  • Paso 5: Habilitación de los nuevos archivos del host virtual
  • Paso 6 (opcional): configuración del archivo de hosts locales
  • Paso 7: Prueba de los resultados
  • Conclusión
  • El servidor HTTP Apache es un servidor web de código abierto muy popular que ofrece flexibilidad, potencia y un amplio soporte para desarrolladores. La configuración del servidor Apache no se lleva a cabo en un único archivo monolítico, sino que se realiza mediante un diseño modular en el que se pueden agregar y modificar nuevos archivos según sea necesario. Dentro de este diseño modular, puede crear un sitio o dominio individual denominado host virtual .

    Mediante el uso de hosts virtuales, una instancia de Apache puede servir a varios sitios web. Cada dominio o sitio individual que se configure mediante Apache dirigirá al visitante a un directorio específico que contiene la información de ese sitio. Esto se hace sin indicarle al visitante que el mismo servidor también es responsable de otros sitios. Este esquema se puede ampliar sin ningún límite de software siempre que su servidor pueda manejar la carga.

    En esta guía, configurará hosts virtuales Apache en un servidor Ubuntu 20.04. Durante este proceso, aprenderá a ofrecer contenido diferente a distintos visitantes según los dominios que soliciten mediante la creación de dos sitios de host virtuales.

    Prerrequisitos

    Antes de comenzar este tutorial, necesitarás:

    • Un servidor Ubuntu 20.04 con un usuario no root con privilegios sudo. Puede utilizar nuestra guía de configuración inicial del servidor con Ubuntu 20.04 para configurarlo.
    • Apache instalado en el servidor. Puede aprender cómo hacerlo completando los pasos 1 a 3 en nuestro tutorial Cómo instalar el servidor web Apache en Ubuntu 20.04 .

    Si utiliza DigitalOcean, puede aprender cómo configurar dominios siguiendo nuestra documentación del producto, Cómo agregar dominios .

    Para completar con éxito este tutorial, necesitará dos dominios con:

    • Un registro A con your_domain apuntando a la dirección IP pública de su servidor.
    • Un registro A con www.your_domain que apunta a la dirección IP pública de su servidor.

    Para otros proveedores, consulte la documentación del producto correspondiente.

    Nota: Si no tiene dominios disponibles en este momento, puede usar valores de prueba localmente en su computadora. El paso 6 de este tutorial le mostrará cómo probar y configurar sus valores de prueba. Esto le permitirá validar su configuración aunque su contenido no esté disponible para otros visitantes a través del nombre de dominio.

    Paso 1: Creación de la estructura del directorio

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

    La raíz de su documento , el directorio de nivel superior que Apache examina para encontrar contenido para ofrecer, se establecerá en directorios individuales dentro del /var/wwwdirectorio. Aquí creará un directorio para cada uno de los hosts virtuales.

    Dentro de cada uno de estos directorios, creará un public_htmldirectorio. El public_htmldirectorio contiene el contenido que se ofrecerá a sus visitantes. Los directorios principales, denominados aquí como your_domain_1y your_domain_2, contendrán los scripts y el código de aplicación para respaldar el contenido web.

    Utilice estos comandos, con sus propios nombres de dominio, para crear sus directorios:

    1. sudo mkdir -p /var/www/your_domain_1/public_html
    2. sudo mkdir -p /var/www/your_domain_2/public_html

    Asegúrese de reemplazar your_domain_1y your_domain_2por sus respectivos dominios. Por ejemplo, si uno de sus dominios fuera ejemplo.com, crearía esta estructura de directorio: /var/www/example.com/public_html.

    Paso 2: Concesión de permisos

    Ha creado la estructura de directorios para sus archivos, pero estos son propiedad del usuario root . Si desea que su usuario habitual pueda modificar los archivos en estos directorios web, puede cambiar la propiedad con estos comandos:

    1. sudo chown -R $USER:$USER /var/www/your_domain_1/public_html
    2. sudo chown -R $USER:$USER /var/www/your_domain_2/public_html

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

    También debe modificar sus 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

    Ahora, su servidor web tiene los permisos necesarios para ofrecer contenido y su usuario debería poder crear contenido dentro de las carpetas necesarias. El siguiente paso es crear contenido para sus sitios de alojamiento virtual.

    Paso 3: Creación de páginas predeterminadas para cada host virtual

    Una vez que hayas creado la estructura de tu directorio, puedes comenzar a concentrarte en cada sitio de alojamiento virtual individual y en el contenido dentro de ese sitio. Comienza creando una index.htmlpágina para tu primer sitio your_domain_1.

    Abra y cree el index.htmlarchivo con su editor de texto preferido. En este ejemplo se utiliza nano:

    1. nano /var/www/your_domain_1/public_html/index.html

    Dentro de este archivo, cree un archivo HTML que indique a los visitantes a qué sitio están conectados:

    /var/www/tu_dominio_1/public_html/index.html

    html  head    titleWelcome to your_domain_1!/title  /head  body    h1Success! The your_domain_1 virtual host is working!/h1  /body/html

    Para guardar y cerrar el archivo en nano, comience presionando CTRL+X. Presione Ycuando se le solicite que guarde el archivo y luego presione ENTERcuando haya terminado para salir.

    A continuación, copie este archivo para usarlo como base para su segundo sitio escribiendo:

    1. cp /var/www/your_domain_1/public_html/index.html /var/www/your_domain_2/public_html/index.html

    Luego abra este nuevo archivo y modifique la información relevante usando su editor de texto como antes:

    1. nano /var/www/your_domain_2/public_html/index.html

    /var/www/tu_dominio_2/public_html/index.html

    html  head    titleWelcome to your_domain_2!/title  /head  body h1Success! The your_domain_2 virtual host is working!/h1  /body/html

    Guarde y cierre este archivo. Ahora tiene una página para cada sitio que puede usar 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 sus hosts virtuales y determinan cómo el servidor web Apache responderá a varias solicitudes de dominio.

    Apache incluye un archivo de host virtual predeterminado llamado 000-default.conf. Puede copiar este archivo para crear archivos de host virtual para cada uno de sus dominios.

    Copie el archivo de configuración predeterminado en el primer dominio:

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

    Tenga en cuenta que la configuración predeterminada de Ubuntu requiere que cada archivo de host virtual termine en .conf.

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

    1. sudo nano /etc/apache2/sites-available/your_domain_1.conf

    Con los comentarios eliminados, el archivo será similar a esto:

    /etc/apache2/sitios-disponibles/su_dominio_1.conf

    VirtualHost *:80  ...    ServerAdmin webmaster@localhost    DocumentRoot /var/www/html   ...    ErrorLog ${APACHE_LOG_DIR}/error.log    CustomLog ${APACHE_LOG_DIR}/access.log combined/VirtualHost

    En este archivo, personaliza los elementos para tu primer dominio y agrega 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, cambie la ServerAdmindirectiva a un correo electrónico a través del cual el administrador del sitio pueda recibir correos electrónicos:

    /etc/apache2/sitios-disponibles/su_dominio_1.conf

    ServerAdmin admin@your_domain_1

    Después de esto, agregue dos directivas adicionales. La primera, llamada ServerName, establece el dominio base para la definición del host virtual. La segunda, llamada ServerAlias, define otros nombres que deben coincidir como si fueran el nombre base. Esto es útil para hacer coincidir hosts adicionales que haya definido. Por ejemplo, si establece la ServerNamedirectiva en , example.compodría definir una ServerAliasen www.example.com, y ambas apuntarán a la dirección IP de este servidor.

    Agregue estas dos directivas a su archivo de configuración después de la ServerAdminlínea:

    /etc/apache2/sitios-disponibles/su_dominio_1.conf

    VirtualHost *:80  ...    ServerAdmin admin@your_domain_1    ServerName your_domain_1    ServerAlias www.your_domain_1    DocumentRoot /var/www/html    .../VirtualHost

    A continuación, cambie la ubicación del archivo de host virtual para la raíz del documento de este dominio. Edite la DocumentRootdirectiva para que apunte al directorio que creó para este host:

    /etc/apache2/sitios-disponibles/su_dominio_1.conf

    DocumentRoot /var/www/your_domain_1/public_html

    A continuación se muestra un ejemplo del archivo de host virtual con todos los ajustes realizados anteriormente:

    /etc/apache2/sitios-disponibles/su_dominio_1.conf

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

    Guarde y cierre el archivo.

    Cree su segundo archivo de configuración copiando el archivo de su primer sitio de host virtual:

    1. sudo cp /etc/apache2/sites-available/your_domain_1.conf /etc/apache2/sites-available/your_domain_2.conf

    Abra el nuevo archivo en su editor preferido:

    1. sudo nano /etc/apache2/sites-available/your_domain_2.conf

    Ahora debes modificar todos los datos para que hagan referencia a tu segundo dominio. Cuando hayas terminado, debería verse así:

    /etc/apache2/sitios-disponibles/su_dominio_2.conf

    VirtualHost *:80  ...    ServerAdmin admin@your_domain_2    ServerName your_domain_2    ServerAlias www.your_domain_2    DocumentRoot /var/www/your_domain_2/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 ha creado los archivos del host virtual, debe habilitarlos. Apache incluye algunas herramientas que le permiten hacerlo.

    Utilizará la a2ensiteherramienta para habilitar cada uno de sus sitios. Si desea obtener más información sobre este script, puede consultar la a2ensitedocumentación .

    Utilice los siguientes comandos para habilitar sus sitios de host virtuales:

    1. sudo a2ensite your_domain_1.conf
    2. sudo a2ensite your_domain_2.conf

    Habrá una salida para ambos sitios, similar al ejemplo a continuación, recordándole que debe recargar su servidor Apache:

    OutputEnabling site example.com.To activate the new configuration, you need to run:  systemctl reload apache2

    Antes de recargar su servidor, deshabilite el sitio predeterminado definido 000-default.confmediante el a2dissitecomando:

    1. sudo a2dissite 000-default.conf
    OutputSite 000-default disabled.To activate the new configuration, you need to run:  systemctl reload apache2

    A continuación, compruebe si hay errores de configuración:

    1. sudo apache2ctl configtest

    Debería recibir el siguiente resultado:

    Output. . .Syntax OK

    Cuando haya terminado, reinicie Apache para que estos cambios surtan efecto.

    1. sudo systemctl restart apache2

    Opcionalmente, puedes comprobar el estado del servidor después de todos estos cambios con este comando:

    1. sudo systemctl status apache2

    Ahora, tu servidor debería estar configurado para servir a dos sitios web. Si estás usando nombres de dominio reales, puedes omitir el paso 6 y pasar al paso 7. Si estás probando tu configuración localmente, sigue el paso 6 para aprender a probar tu configuración usando tu computadora local.

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

    Si no ha utilizado nombres de dominio reales de su propiedad para probar este procedimiento y ha utilizado dominios de ejemplo, puede probar la funcionalidad de sus sitios de host virtual 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 privado virtual (VPS), tal como lo haría el sistema DNS si estuviera utilizando dominios registrados. Esto solo funcionará desde su computadora local y es solo para fines de prueba.

    Asegúrese de que está trabajando en su computadora local para realizar estos pasos y no en su servidor VPS. 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, abra el Símbolo del sistema y escriba:

    1. notepad %windir%system32driversetchosts

    Los detalles que debe agregar son la dirección IP pública de su servidor, seguida del dominio que desea utilizar para acceder a ese servidor. Si utiliza los dominios utilizados en esta guía y reemplaza la dirección IP de su servidor por el your_server_IPtexto, su archivo debería verse así:

    /etc/hosts

    127.0.0.1   localhost127.0.1.1   guest-desktopyour_server_IP your_domain_1your_server_IP your_domain_2

    Esto dirigirá cualquier solicitud para sus dos dominios en su computadora y las enviará a su servidor en la dirección IP designada.

    Guarde y cierre el archivo.

    Paso 7: Prueba de los resultados

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

    http://your_domain_1

    También puedes visitar tu segunda página de host y ver el archivo que creaste para tu segundo sitio:

    http://your_domain_2

    Si ambos sitios funcionan como se espera, habrá configurado correctamente dos hosts virtuales en el mismo servidor.

    Nota: si ajustó el archivo de hosts de su computadora local, como en el paso 6 de este tutorial, es posible que desee eliminar las líneas que agregó ahora que verificó que su configuración funciona. Esto evitará que su hostsarchivo se llene con entradas que ya no son necesarias.

    Conclusión

    Ahora tienes un único servidor que gestiona dos nombres de dominio independientes. Puedes ampliar este proceso siguiendo los pasos que describimos anteriormente para añadir hosts virtuales adicionales. No hay ningún límite de software en cuanto a la cantidad de nombres de dominio que Apache puede gestionar, así que puedes crear tantos hosts virtuales como tu servidor sea capaz de gestionar.

    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