Un host virtual es una directiva de configuración de Apache que le permite ejecutar más de un sitio web en un solo servidor. Con Virtual Hosts, puede especificar la raíz del documento del sitio (el directorio que contiene los archivos del sitio web), crear una política de seguridad separada para cada sitio, usar diferentes certificados SSL y mucho más.

Este artículo describe cómo configurar Apache Virtual Hosts en Ubuntu 20.04.

requisitos previos

Asegúrese de haber cumplido con los siguientes requisitos antes de continuar con la guía:

  • Uno o más nombres de dominio que apuntan a la IP de su servidor público.
  • Apache instalado en su sistema Ubuntu .
  • Ha iniciado sesión como root o usuario con privilegios sudo .

Creación de la estructura del directorio

La raíz del documento es el directorio donde se almacenan y sirven los archivos del sitio web para un nombre de dominio en respuesta a las solicitudes. Puede establecer la raíz del documento en cualquier ubicación que desee; en este ejemplo, utilizaremos la siguiente estructura de directorios:

/var/www/
├── domain1.com
│   └── public_html
├── domain2.com
│   └── public_html

Cada dominio alojado en el servidor tendrá su raíz de documento establecida en /var/www/<domain_name>/public_html.

Comience creando el directorio raíz para el dominio:

sudo mkdir -p /var/www/domain1.com/public_html

También crearemos un index.htmlarchivo dentro del directorio raíz del documento del dominio que se mostrará cuando visite el dominio en su navegador:

/var/www/dominio1.com/public_html/index.html
<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>Welcome to domain1.com</title>
  </head>
  <body>
    <h1>Success! domain1.com home page!</h1>
  </body>
</html>

Dado que los comandos anteriores se ejecutan como un usuario sudo, los archivos y directorios recién creados son propiedad de root. Para evitar cualquier problema de permisos, cambie la propiedad del directorio raíz del documento del dominio y todos los archivos dentro del directorio al usuario de apache ( www-data):

sudo chown -R www-data: /var/www/domain1.com

Creación de hosts virtuales

En los sistemas Ubuntu, los archivos de configuración de Apache Virtual Hosts se encuentran en el /etc/apache2/sites-availabledirectorio. Se pueden habilitar creando enlaces simbólicos al /etc/apache2/sites-enableddirectorio, que Apache lee durante el inicio.

Abra el editor de texto de su elección y cree el siguiente archivo de configuración básico de Virtual Host:

/etc/apache2/sitios-disponibles/dominio1.com.conf
<VirtualHost *:80>
    ServerName domain1.com
    ServerAlias www.domain1.com
    ServerAdmin webmaster@domain1.com
    DocumentRoot /var/www/domain1.com/public_html

    <Directory /var/www/domain1.com/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/domain1.com-error.log
    CustomLog ${APACHE_LOG_DIR}/domain1.com-access.log combined
</VirtualHost>
  • ServerName: el dominio que debe coincidir con esta configuración de host virtual. Este debe ser su nombre de dominio.
  • ServerAlias: todos los demás dominios o subdominios que deberían coincidir con este host virtual, como el wwwsubdominio.
  • DocumentRoot: El directorio desde el cual Apache servirá los archivos de dominio.
  • OptionsEsta directiva controla qué características del servidor están disponibles en un directorio específico.
    • -Indexes: Evita las listas de directorios.
    • FollowSymLinks: Cuando esta opción está habilitada, Apache seguirá los enlaces simbólicos.
  • AllowOverride: especifica qué directivas declaradas en el .htaccessarchivo pueden invalidar las directivas de configuración.
  • ErrorLogCustomLog: especifica la ubicación de los archivos de registro.

Puede nombrar el archivo de configuración como desee, pero la mejor práctica es usar el nombre de dominio como el nombre del archivo de configuración del host virtual.

Para habilitar el nuevo archivo de host virtual, use la a2ensitesecuencia de comandos auxiliar que crea un enlace simbólico desde el archivo de host virtual al sites-enableddirectorio:

sudo a2ensite domain1.com

La otra opción es crear manualmente un enlace simbólico como se muestra a continuación:

sudo ln -s /etc/apache2/sites-available/domain1.com.conf /etc/apache2/sites-enabled/

Una vez hecho esto, pruebe la configuración en busca de errores de sintaxis con:

sudo apachectl configtest

Si no hay errores, verá el siguiente resultado:

Syntax OK

Reinicie el servicio de Apache para que los cambios surtan efecto:

sudo systemctl restart apache2

Finalmente, para verificar que todo funciona como se espera, abra http://domain1.comen su navegador y verá el contenido de la index.htmlpágina:

Conclusión

Ha aprendido a crear una configuración de host virtual Apache para alojar varios dominios en un solo servidor Ubuntu.

Repita los pasos que describimos anteriormente para crear hosts virtuales adicionales para todos sus dominios.

Si tiene algún problema, no dude en dejar un comentario.