Apache Virtual Hosts le permite alojar múltiples sitios web en un solo servidor. Apache dividirá su funcionalidad y componentes en unidades individuales para que podamos personalizar de forma independiente.
Aquí en LinuxAPT, como parte de nuestros Servicios de Administración de Servidores, ayudamos regularmente a nuestros Clientes a realizar consultas relacionadas con Apache Virtual Hosts.
En este contexto, veremos cómo configurar Apache Virtual Hosts en un servidor Ubuntu 18.04.
¿Cómo crear hosts virtuales en Ubuntu?
Con Virtual Hosts, podemos especificar la raíz del documento del sitio web por separado, la política de seguridad, usar diferentes certificados SSL y mucho más.
Antes de proceder con este trámite, debemos asegurarnos de que se cumplen los siguientes requisitos:
- Un servidor Ubuntu 18.04 con un usuario no root con privilegios sudo.
- Apache debe instalarse y configurarse, como se menciona en Cómo instalar Apache en un servidor Ubuntu 18.04.
- Un nombre de dominio debe apuntar a la dirección IP de su servidor.
1. Crear la Estructura de Directorio
Al principio, necesitamos crear un directorio donde almacenaremos los archivos del sitio web de un dominio y responderemos a los visitantes del sitio web.
Generalmente, se llama DocumentRoot.
i. Puede configurar la raíz del documento en cualquier ubicación que desee, pero es una buena práctica configurarla en la estructura del directorio.
Entonces almacenaremos todo en /var/www:
/var/www/
├── example1.com
│ └── public_html
├── linuxapt.com
│ └── public_html
Básicamente, crearemos un directorio separado dentro del directorio /var/www para cada dominio que queramos alojar en nuestro servidor.
ii. Dentro de estos directorios, crearemos un directorio public_html que almacenará los archivos del sitio web del dominio:
$ sudo mkdir -p /var/www/example.com/public_html
Cree un archivo index.html dentro del directorio raíz del documento del dominio con fines de prueba. De forma predeterminada, esta página se mostrará cuando los visitantes visiten su sitio web.
iii. Para crear un nuevo archivo index.html usando su editor de texto favorito, escriba:
$ sudo nano /var/www/example.com/public_html/index.html
IV. Después de eso, agregue las siguientes líneas:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Welcome!!</title>
</head>
<body>
<h1>Great! example.com set up completed!</h1>
</body>
</html>
Todos los comandos se ejecutan como usuario sudo y los archivos y directorios recién creados son propiedad del usuario raíz.
Por lo tanto, debemos cambiar la propiedad de los directorios raíz de documentos para evitar problemas de permisos para nuestro usuario habitual.
Por lo tanto, el usuario normal puede modificar archivos en nuestros directorios web sin ningún problema:
$ sudo chown -R www-data: /var/www/example.com
2. Crear archivos de host virtual
Los archivos de configuración de Apache Virtual Hosts se almacenarán en el directorio /etc/apache2/sites-available y podemos habilitarlo creando enlaces simbólicos al directorio /etc/apache2/sites-enabled.
Cree un nuevo archivo usando el editor de texto de su elección escribiendo:
$ sudo nano /etc/apache2/sites-available/example.com.conf
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
ServerAdmin [email protected]
DocumentRoot /var/www/example.com/public_html
<Directory /var/www/example.com/public_html>
Options -Indexes +FollowSymLinks
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
</VirtualHost>
- ServerName:este debe ser su nombre de dominio y coincidir con la configuración del host virtual.
- ServerAlias:todos los demás dominios o subdominios que también deben coincidir con este host virtual, generalmente el subdominio www.
- DocumentRoot:ruta del directorio de host virtual desde el cual Apache servirá los archivos de dominio.
- Opciones:esta directiva controla qué funciones del servidor están disponibles en un directorio específico.
- -Índices:Evitará las listas de directorios.
- FollowSymLinks:Apache seguirá los enlaces simbólicos si esta opción está habilitada.
- AllowOverride:especifica qué directivas declaradas en el archivo .htaccess pueden anular las directivas de configuración.
- ErrorLog, CustomLog:especifica la ubicación de los archivos de registro.
Puede dar cualquier nombre a su archivo de configuración, pero se recomienda darle el mismo nombre de archivo que el nombre de dominio.
Ahora, crearemos un enlace simbólico en el directorio /etc/apache2/sites-enabled para habilitar el sitio web recién creado.
Por defecto en los sistemas Ubuntu tienen un script de ayuda para crear enlaces simbólicos. Para crear usando el script auxiliar de a2ensite, ejecute el siguiente comando:
$ sudo a2ensite example.com
También puede crear un enlace simbólico manualmente por tipo:
$ sudo ln -s /etc/apache2/sites-available/example.com.conf /etc/apache2/sites-enabled/
Una vez creado, verifique los errores de sintaxis usando:
$ sudo apachectl configtest
Se mostrará debajo de la salida si no hay errores:
Output
Syntax OK
Debe reiniciar el servicio apache2 para que los cambios surtan efecto con el siguiente comando:
$ sudo systemctl restart apache2
Finalmente, puede verificar abriendo su http://example.com en su navegador web y debería mostrarle lo siguiente:
Great! example.com set up completed!