Cómo configurar hosts virtuales Apache en Ubuntu 20.04

Introducció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/www
directorio. Aquí creará un directorio para cada uno de los hosts virtuales.
Dentro de cada uno de estos directorios, creará un public_html
directorio. El public_html
directorio contiene el contenido que se ofrecerá a sus visitantes. Los directorios principales, denominados aquí como your_domain_1
y 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:
- sudo mkdir -p /var/www/your_domain_1/public_html
- sudo mkdir -p /var/www/your_domain_2/public_html
Asegúrese de reemplazar your_domain_1
y your_domain_2
por 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:
- sudo chown -R $USER:$USER /var/www/your_domain_1/public_html
- sudo chown -R $USER:$USER /var/www/your_domain_2/public_html
La $USER
variable 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_html
subdirectorios 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:
- 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.html
página para tu primer sitio your_domain_1
.
Abra y cree el index.html
archivo con su editor de texto preferido. En este ejemplo se utiliza nano
:
- 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 Y
cuando se le solicite que guarde el archivo y luego presione ENTER
cuando haya terminado para salir.
A continuación, copie este archivo para usarlo como base para su segundo sitio escribiendo:
- 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:
- 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:
- 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 :
- 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 ServerAdmin
directiva 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 ServerName
directiva en , example.com
podría definir una ServerAlias
en 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 ServerAdmin
lí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 DocumentRoot
directiva 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:
- 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:
- 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 a2ensite
herramienta para habilitar cada uno de sus sitios. Si desea obtener más información sobre este script, puede consultar la a2ensite
documentación .
Utilice los siguientes comandos para habilitar sus sitios de host virtuales:
- sudo a2ensite your_domain_1.conf
- 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.conf
mediante el a2dissite
comando:
- 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:
- sudo apache2ctl configtest
Debería recibir el siguiente resultado:
Output. . .Syntax OK
Cuando haya terminado, reinicie Apache para que estos cambios surtan efecto.
- sudo systemctl restart apache2
Opcionalmente, puedes comprobar el estado del servidor después de todos estos cambios con este comando:
- 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 hosts
archivo 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:
- sudo nano /etc/hosts
Si está en una máquina Windows, abra el Símbolo del sistema y escriba:
- 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_IP
texto, 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 hosts
archivo 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.
Deja una respuesta