Apache es actualmente el servidor web más utilizado en el mundo. Es un software de código abierto mantenido por The Apache Software Foundation. A partir de septiembre de 2020, se estima que sirve al 36% de todo el tráfico de sitios web del mundo. A los desarrolladores les encanta por su velocidad, seguridad, confiabilidad y robustez. Su facilidad de personalización le permite satisfacer las necesidades de muchos entornos mediante la instalación de extensiones y módulos.
Apache viene con un sistema de emparejamiento que puede utilizar para alojar múltiples dominios o sitios utilizando una única instalación de servidor Apache expuesta en una sola dirección IP. Los dominios o sitios se configuran en uno de los archivos de configuración de Apache definidos como hosts virtuales.
Cada dominio tiene una definición de host virtual con un directorio específico al que apunta. Cuando un usuario visita un dominio, el servidor examina cada host virtual coincidente y selecciona cuál usar para atender la solicitud del visitante según el nombre de host que haya ingresado. Si no se encuentra ningún nombre de host coincidente, el servidor utiliza el primer host virtual definido en el archivo conf como alternativa. El visitante accederá a la página web que solicitó sin saber que el mismo servidor está sirviendo a otros sitios. Dependiendo de los recursos que tenga en su servidor y de la cantidad de tráfico que pueda manejar, puede alojar tantos dominios como desee.
En este tutorial, le guiaremos a través de la configuración de hosts virtuales en el Ubuntu 20.04 servidor.
Lo primero es lo primero
Para poder seguir el tutorial, debe tener una instalación de Ubuntu 20.04. También necesita crear un usuario no root e iniciar sesión con él.
Los pasos de este tutorial también requieren que tenga instalado Apache. Si aún no lo ha hecho, puede instalarlo utilizando los siguientes comandos. Puede seguir nuestro Configuración de la pila LAMP – tutorial de Linux Apache MySQL PHP para obtener una guía de configuración más detallada.
|
1 2 |
sudo apt update sudo apt install apache2 |
Debe tener nombres de dominio gratuitos o de pago registrados en un registrador de dominios de su elección. Asegúrese de que los dominios apunten a su servidor mediante la configuración de los registros DNS. Sin embargo, aún puede utilizar nuestras configuraciones para seguir los pasos de este tutorial. Utilizaremos example.dev y mydomain.com para este tutorial. Es libre de sustituirlos por los suyos propios. Si decide utilizar los dominios de prueba, entonces se deben editar los archivos hosts en Apache para manejar los dominios. Cubriremos cómo hacer esto más adelante en el tutorial.
Paso 1 – Configurar los directorios del sitio web
Estos son los directorios que contienen los datos del sitio a los que accederán los visitantes de su sitio web. La raíz de documentos de Apache que es accesible desde Internet suele estar en /var/www. Aquí es donde crearemos los directorios para los dominios individuales que queremos alojar. En cada uno de los directorios, agregaremos el directorio public_html para contener los archivos reales del sitio web. El host virtual apunta al directorio public_html. Esto le brinda flexibilidad, ya que puede mantener archivos cruciales del sitio web fuera de public_html y colocar solo archivos públicos dentro.
A continuación, introduzca los siguientes comandos para crear los directorios. Recuerde siempre sustituir los dominios de prueba por sus dominios reales para las configuraciones posteriores:
|
1 2 |
sudo mkdir -p /var/www/example.dev/public_html sudo mkdir -p /var/www/mydomain.com/public_html |
Paso 2 – Cambiar los permisos de lectura y escritura
Los comandos anteriores crearon la estructura de directorios pero mantuvieron la propiedad para el usuario root. Queremos que nuestro usuario no root tenga permisos completos de lectura y escritura en los directorios. También queremos que la web en general tenga permisos de lectura.
Primero, cambie la propiedad al usuario no root ingresando el siguiente comando:
|
1 2 |
sudo chown -R $USER:$USER /var/www/example.dev/public_html sudo chown -R $USER:$USER /var/www/mydomain.com/public_html |
La variable $USER toma las credenciales del usuario que ha iniciado sesión actualmente. El usuario normal ahora tiene la propiedad de public_html. A continuación, debe otorgar permisos de lectura a la web general. El siguiente comando permite el permiso a todos los archivos en el directorio, asegurando que las páginas web se sirvan correctamente:
|
1 |
sudo chmod -R 755 /var/www |
Al ejecutar los tres comandos anteriores, su sitio web ahora puede servir contenido. Además, su usuario puede igualmente crear contenido para ser servido en los directorios específicos. Aquí puede encontrar más información sobre los permisos de Ubuntu.
Paso 3 – Crear páginas de demostración en los directorios para cada host virtual
Con la estructura de directorios en su lugar, es hora de hacer algo de scripting. Estaremos utilizando HTML y el editor de texto nano para crear algunas páginas web básicas. Ingrese el siguiente comando para abrir nano y crear un archivo index.html en el directorio para el primer dominio:
|
1 |
vim /var/www/example.dev/public_html/index.html |
En el editor, coloque el siguiente código de muestra que se mostrará cuando accedamos al dominio:
|
1 2 3 4 5 6 7 8 |
<html> <head> <title>Bienvenido a Example.dev!</title> </head> <body> <h1>Éxito! El example.dev virtual host está funcionando!</h1> </body> </html> |
Una vez que haya pegado las líneas anteriores, presione “!wq” para guardar y salir del archivo.
Cree la página index.html para el segundo dominio utilizando el editor nano ingresando el siguiente comando:
|
1 |
vim /var/www/mydomain.com/public_html/index.html |
Luego, en el editor, pegue el siguiente código HTML, guarde y salga:
|
1 2 3 4 5 6 7 8 |
<html> <head> <title>Bienvenido a Mydomain.com!</title> </head> <body> <h1>Éxito! El mydomain.com virtual host está funcionando!</h1> </body> </html> |
Ahora, tiene las páginas para probar los dos hosts virtuales que vamos a crear en el siguiente paso.
Paso 4 – Crear archivos de host virtual para los nombres de dominio
Los archivos de host virtual contienen configuraciones para cada host virtual. Definen cómo se servirá un nombre de dominio. Una nueva instalación de Apache viene con un archivo de host virtual predeterminado llamado 000-default.conf que podemos usar y adaptar a nuestros dominios. Como puede ver, termina con una extensión .conf, que es lo que Ubuntu espera para los archivos de configuración.
Los archivos de configuración de Apache se encuentran en el directorio /etc/apache2/sites-available. Allí almacenaremos nuestros archivos de host virtual. Podemos copiar el archivo conf predeterminado y editarlo donde sea necesario.
-
Crear el primer archivo de host virtual para el dominio example.dev
Ingrese el siguiente comando para crear example.dev.conf copiando el archivo conf predeterminado:
|
1 |
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.dev.conf |
A continuación, abra el archivo creado utilizando el editor nano con privilegios de sudo mediante el siguiente comando:
|
1 |
sudo nano /etc/apache2/sites-available/example.dev.conf |
El archivo conf predeterminado se ve como en la siguiente captura de pantalla. Los comentarios son para guiarle. Podemos eliminarlos y dejar solo el archivo limpio con las líneas de configuración reales:

Debe personalizar este archivo para su nombre de dominio y la ruta del directorio donde ha guardado los archivos del sitio web. Además, actualizaremos y añadiremos varias directivas al archivo. Ya cuenta con una directiva ServerAdmin, que contiene la dirección de correo electrónico en la que el administrador del servidor recibirá los correos. También tiene una directiva DocumentRoot, que apunta al directorio donde ha almacenado los archivos del sitio web.
Necesitamos añadir dos nuevas directivas: ServerName y ServerAlias. ServerName establece el nombre de dominio base. Es donde coloca su dominio. ServerAlias define otros nombres que Apache debe hacer coincidir como si fueran el nombre de dominio base. Le permite hacer coincidir hosts como www.
Actualice el archivo para que se vea como se muestra a continuación:
|
1 2 3 4 5 6 7 8 |
<VirtualHost *:80> ServerAdmin admin@example.dev ServerName example.dev ServerAlias www.example.dev DocumentRoot /var/www/example.dev/public_html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> |
Después de eso, actualice sus dominios y correo electrónico de manera adecuada. Una vez hecho esto, presione CTRL + O y ENTER para guardar el archivo. Para salir del editor, presione CTRL + X.
-
Crear el primer archivo de host virtual para el dominio mydomain.com
Podemos simplemente copiar el host virtual para el primer dominio y actualizarlo donde sea necesario para el segundo dominio. Utilice el siguiente comando para copiar el archivo:
|
1 |
sudo cp /etc/apache2/sites-available/example.dev.conf /etc/apache2/sites-available/mydomain.com.conf |
A continuación, ábralo en el editor nano utilizando el comando:
|
1 |
sudo nano /etc/apache2/sites-available/mydomain.com.conf |
Busque las directivas y actualícelas adecuadamente para que el archivo se vea como se muestra a continuación:
|
1 2 3 4 5 6 7 8 |
<VirtualHost *:80> ServerAdmin admin@mydomain.com ServerName mydomain.com ServerAlias www.mydomain.com DocumentRoot /var/www/mydomain.com/public_html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> |
Una vez hecho esto, guarde el archivo y salga del editor.
Paso 5 – Habilitar los archivos de host virtual
En el paso cuatro, creamos los archivos de host virtual. Sin embargo, no son funcionales hasta que los habilite. Apache tiene una herramienta llamada a2ensite que utilizaremos para habilitar los hosts virtuales.
Introduzca los siguientes dos comandos para habilitar los hosts virtuales:
|
1 2 |
sudo a2ensite example.dev.conf sudo a2ensite mydomain.com.conf |
El resultado de los comandos anteriores es como se muestra a continuación:

A continuación, debe deshabilitar el archivo de configuración predeterminado; utilizamos la herramienta de Apache a2dissite para deshabilitar sitios. Introduzca el siguiente comando:
|
1 |
sudo a2dissite 000-default.conf |
Como se ve en el resultado, debe reiniciar Apache para que se apliquen las configuraciones. Utilice el siguiente comando:
|
1 |
sudo systemctl restart apache2 |
A continuación, comprueba el estado de Apache utilizando el siguiente comando:
|
1 |
sudo systemctl status apache2 |
La salida muestra que tu servidor está activo y funcionando, y que es capaz de servir los dos sitios web.

Paso 6 – Modificar los hosts locales con dominios de ejemplo
Si no habías registrado un dominio real sino que estabas utilizando dominios de prueba, tendrás que actualizar tus archivos de hosts locales. Estos necesitan interceptar el tráfico y dirigirlo al directorio de tu sitio web cuando navegues a cualquiera de los dominios configurados en los archivos de hosts virtuales. Recuerda que esto solo funcionará en tu ordenador local. Si tu ordenador local ejecuta un sistema operativo Windows, entonces sigue las instrucciones para configurar hosts en este enlace.
Si estás en una máquina Mac o Linux, el archivo hosts se encuentra en el directorio /etc. Utilizaremos el editor nano para abrir y añadir nuestros dominios de prueba. Primero, busca la dirección IP de tu VPS introduciendo el siguiente comando:
|
1 |
curl -4 icanhazip.com |
Introduce el siguiente comando para abrir el archivo y actualizarlo con la dirección IP de tu servidor:
|
1 |
sudo nano /etc/hosts |
|
1 2 3 4 |
127.0.0.1 localhost 127.0.1.1 ComputerName your_server_IP example.dev your_server_IP mydomain.com |
A continuación, guarda y cierra el archivo. Cada vez que introduces un nombre de dominio en tu navegador, primero se comprueba el archivo hosts. Si se encuentra el nombre de dominio, el tráfico se dirige a la dirección IP especificada. Si no se encuentra, se utiliza el sistema DNS para la redirección global. Para nuestros dominios de prueba, el tráfico se dirigirá a la dirección IP especificada.
Paso 7 – Probar tus hosts virtuales
Con los nombres de dominio configurados, puedes probar si funcionan comprobándolos en el navegador/terminal:
|
1 |
curl http://example.dev |
La salida debería mostrar algo como esto:

|
1 |
http://mydomain.com |

¡Enhorabuena! Has configurado correctamente dos sitios web para que se ejecuten en un solo servidor.
Conclusión
En esta guía, has aprendido a configurar tu servidor Apache para servir más de un sitio web. Si deseas añadir más sitios web, puedes hacerlo siguiendo los pasos y configurando hosts virtuales. Apache puede manejar tantos dominios como desees, siempre que los recursos de tu servidor puedan soportarlos.
¡Feliz computación!
Comentarios
Aún no hay comentarios. Sea el primero.