Introducción
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 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 hosts virtuales Apache en Ubuntu 20.04 LTS Focal Fossa.
Prerrequisitos
Asegúrese de cumplir 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. En este tutorial vamos a
domain1.com
utilizando domain1.com ydomain2.com
, tenga cuidado al cambiar los valores siguientes a su propio nombre de dominio. - Apache instalado en su sistema Ubuntu.
- Ha iniciado sesión como root o usuario con privilegios de sudo.
Si desea crear hosts virtuales con Apache en un servidor remoto, continúe leyendo, de lo contrario, omita el primer párrafo "Conectando al servidor" y lea el siguiente.
Conexión al servidor
Para acceder al servidor, necesita conocer la dirección IP. También necesitará su nombre de usuario y contraseña para la autenticación. Para conectarse al servidor como root, escriba el siguiente comando:
ssh root@IP_DEL_SERVER
A continuación, deberá ingresar la contraseña del usuario root.
Si no usa el usuario raíz, puede iniciar sesión con otro nombre de usuario usando el mismo comando, luego cambie la raíz a su nombre de usuario:
ssh nome_utente@IP_DEL_SERVER
Luego se le pedirá que ingrese su contraseña de usuario.
El puerto estándar para conectarse a través de ssh es 22, si su servidor usa un puerto diferente, deberá especificarlo usando el parámetro -p, luego escriba el siguiente comando:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Crea la estructura del directorio
La raíz del documento es el directorio donde se almacenan los archivos del sitio web para un nombre de dominio y se ofrecen en respuesta a las solicitudes. Puede establecer la raíz del documento en cualquier ubicación que desee, en este ejemplo usaremos la siguiente estructura de directorio:
/var/www/├── domain1.com
│ └── public_html
├── domain2.com
│ └── public_html
Cada dominio alojado en el servidor tendrá la raíz del documento establecida en /var/www/<domain_name>/public_html
.
Comience creando el directorio raíz para el dominio con el comando mkdir:
sudo mkdir -p /var/www/domain1.com/public_html
También crearemos un index.html
dentro del directorio raíz del documento del dominio que se mostrará cuando visite el dominio en su navegador.
Luego, con su editor de texto favorito, cree el siguiente archivo:
sudo nano /var/www/domain1.com/public_html/index.html
Pegue el siguiente texto en el archivo:
<!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 el usuario sudo, los archivos y directorios recién creados son propiedad de root. Para evitar problemas de autorización, 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
Crea un host virtual
En los sistemas Ubuntu, los archivos de configuración del host virtual Apache se encuentran en el /etc/apache2/sites-available
. Se pueden habilitar creando enlaces simbólicos al /etc/apache2/sites-enabled
, que Apache lee durante el inicio.
Abra su editor de texto favorito y cree el siguiente archivo de configuración de host virtual básico:
sudo nano /etc/apache2/sites-available/domain1.com.conf
Pegue el siguiente código, cambiando el nombre de dominio:
<VirtualHost *:80>
ServerName domain1.com
ServerAlias www.domain1.com
ServerAdmin [email protected]
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 deben coincidir con este host virtual, como el subdominiowww
DocumentRoot
: el directorio desde el que Apache servirá los archivos de dominio.Options
: esta directiva controla qué funciones del servidor están disponibles en un directorio específico.-Indexes
: evita listados de directorios.FollowSymLinks
: cuando esta opción está habilitada, Apache seguirá los enlaces simbólicos.AllowOverride
: especifica qué directivas declaradas en el.htaccess
pueden anular las directivas de configuración.ErrorLog
,CustomLog
: especifica la ruta de los archivos de registro.
Puede nombrar el archivo de configuración como desee, pero se recomienda que utilice el nombre de dominio como el nombre del archivo de configuración del host virtual.
Para habilitar el nuevo archivo de host virtual, use el a2ensite
auxiliar a2ensite que crea un enlace simbólico desde el archivo de host virtual al directorio sites-enabled
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/
Cuando termine, 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 Apache para que los cambios surtan efecto:
sudo systemctl restart apache2
Finalmente, para verificar que todo funciona como se esperaba, abre el navegador y conéctate a tu nombre de dominio http://domain1.com
y verás el contenido de la index.html
creada anteriormente.
Conclusión
Aprendió a crear una configuración con Apache Virtual Host para alojar múltiples dominios en un solo servidor Ubuntu 20.04 LTS Focal Fossa.
Repita los pasos anteriores para crear hosts virtuales adicionales para todos sus dominios.