Volver al blog

Configuración de hosts virtuales de Apache en Ubuntu 20.04

Configuración de hosts virtuales de Apache en Ubuntu 20.04

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.

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:

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:

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:

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:

En el editor, coloque el siguiente código de muestra que se mostrará cuando accedamos al dominio:

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:

Luego, en el editor, pegue el siguiente código HTML, guarde y salga:

 

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:

A continuación, abra el archivo creado utilizando el editor nano con privilegios de sudo mediante el siguiente comando:

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:

default configuration

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:

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:

A continuación, ábralo en el editor nano utilizando el comando:

Busque las directivas y actualícelas adecuadamente para que el archivo se vea como se muestra a continuación:

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:

El resultado de los comandos anteriores es como se muestra a continuación:

Apache еnable configuration

A continuación, debe deshabilitar el archivo de configuración predeterminado; utilizamos la herramienta de Apache a2dissite para deshabilitar sitios. Introduzca el siguiente comando:

Como se ve en el resultado, debe reiniciar Apache para que se apliquen las configuraciones. Utilice el siguiente comando:

A continuación, comprueba el estado de Apache utilizando el siguiente comando:

La salida muestra que tu servidor está activo y funcionando, y que es capaz de servir los dos sitios web.

Apache 2 status

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:

Introduce el siguiente comando para abrir el archivo y actualizarlo con la dirección IP de tu servidor:

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:

La salida debería mostrar algo como esto:
curl example.dev

Apache curl 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!

author

Akshay Nagpal

Autor · CloudSigma

Preslav Dobrev es diseñador creativo en CloudSigma, centrado en una identidad empresarial coherente mediante el uso de canales de marketing tradicionales e innovadores. Es experto en fusionar la visión artística con el marketing estratégico para crear narrativas de marca impactantes.

Comentarios

Aún no hay comentarios. Sea el primero.