Introducción
Apache Virtual Hosts permite que varios sitios web se ejecuten en un servidor web. Con los hosts virtuales, 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 para cada sitio y mucho más.
En este tutorial, proporcionaremos instrucciones detalladas sobre cómo configurar hosts virtuales Apache en un servidor CentOS 8.
Prerrequisitos
Asegúrese de haber cumplido los siguientes requisitos previos antes de continuar con este tutorial:
- Nombre de dominio que apunta a la IP de su servidor público. Usaremos
example.com
. - Apache instalado siguiendo esta guía: Cómo instalar Apache en CentOS 8.
- Inicie sesión como usuario con privilegios de sudo.
Si desea instalar Apache Virtual Hosts 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 está utilizando el usuario root, puede iniciar sesión con otro nombre de usuario utilizando el mismo comando, luego cambie root 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
DocumentRoot 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/├── example.com
│ └── public_html
├── example-1.com
│ └── public_html
├── example-2.com
│ └── public_html
Estamos creando un directorio separado para cada dominio que queremos alojar en nuestro servidor dentro del directorio var/www
Dentro de cada uno de estos directorios, crearemos un public_html
que almacenará los archivos del sitio web del dominio.
Cree el directorio raíz para el dominio example.com
con el comando mkdir:
sudo mkdir -p /var/www/example.com/public_html
En este tutorial usamos nano, si lo prefiere puede usar vi instalado por defecto en la mayoría de las distribuciones.
sudo dnf install nano
Con fines de prueba, crearemos un index.html
dentro del directorio raíz del documento de dominio. Abra su editor y cree un archivo HTML con el siguiente contenido:
sudo nano /var/www/example.com/public_html/index.html
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Welcome to example.com</title>
</head>
<body>
<h1>Success! example.com home page!</h1>
</body>
</html>
Todos los comandos se ejecutan como el usuario sudo, por lo que los archivos y directorios recién creados son propiedad del usuario root. Para asegurarse de que no haya problemas de autorización, cambie la propiedad raíz del documento de dominio para el usuario de apache
sudo chown -R apache: /var/www/example.com
Crear el archivo de host virtual
Hay varias formas de configurar un host virtual. Puede agregar todas las directivas de host virtual en un solo archivo o crear un nuevo archivo de configuración para cada directiva de host virtual.
De forma predeterminada, Apache está configurado para cargar todos los archivos de configuración que terminan en .conf
desde el directorio /etc/httpd/conf.d/
Para crear un host virtual para un sitio web específico, abra su editor favorito y cree el siguiente archivo de configuración de host virtual básico:
sudo nano /etc/httpd/conf.d/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 /var/log/httpd/example.com-error.log
CustomLog /var/log/httpd/example.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 que también 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 desde el navegador.FollowSymLinks
: esta opción le indica al servidor web que siga 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.
Edite el archivo según sus necesidades y guárdelo.
Es importante que el nombre del archivo de configuración .conf
. 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.
Pruebe la sintaxis del archivo de configuración con:
sudo apachectl configtest
Si no hay errores, verá el siguiente resultado:
Syntax OK
Para activar un host virtual recién creado, reinicie el servicio Apache con:
sudo systemctl restart httpd
Verifique que todo funcione como se esperaba abriendo http://example.com
.
Conclusión
En este tutorial, le mostramos cómo crear una configuración de host virtual Apache. Puede repetir los pasos anteriores y crear hosts virtuales adicionales para todos sus dominios.