En este momento estás viendo Como crear hosts virtuales

Como crear hosts virtuales

Vamos a ver como crear varios hosts virtuales para alojar varios sitios web en un mismo servidor Apache, paso a paso.

Como crear hosts virtuales en un servidor Apache con Ubuntu 20.04.4 Server

Sumario

  • Creación de la estructura de directorios.
    • Concedemos permisos
  • Creamos páginas de prueba para cada host virtual
  • Creamos los ficheros de configuración de los hosts virtuales
    • Directivas contenidas en el fichero de configuración del host virtual
    • Creamos el primer fichero de configuración de host virtual
    • Creamos el segundo fichero de configuración de host virtual
    • Habilitamos los ficheros de configuración
  • Configurar el fichero de hosts locales.

Creación de estructura de directorios

El primer paso que daremos es crear una estructura de directorios que albergará los datos de los sitios que Apache servirá a los visitantes.

Fijaremos en nuestro «document root», el directorio en el que Apache busca el contenido que ha de servir, una estructura de directorios individuales bajo el directorio /var/www/. Crearemos un directorio aquí para cada host virtual que necesitemos.

En cada uno de estos directorios, crearemos un directorio «public_html» que contendrá nuestros ficheros. Esto nos permitirá alojar tantos sitios web como queramos.

Por ejemplo, para nuestros sitios crearemos una estructura de directorios como vemos a continuación. Un directorio para «weblinus.local» y otro para «trufaslaencina.local».

sudo mkdir -p /var/www/weblinus.local/public_html
sudo mkdir -p /var/www/trufaslaencina.local/public_html

Concedemos permisos

Tenemos la estructura de directorios que buscábamos para alojar nuestros sitios, pero son propiedad del usuario «root». Para que el usuario apache pueda escribir y modificar ficheros en estos directorios, tenemos que cambiar la propiedad con los siguientes comandos,

sudo chown -R www-data:www-data /var/www/weblinus.local/public_html
sudo chown -R www-data:www-data /var/www/trufaslaencina.local/public_html

Como vemos hemos cambiado la propiedad de los directorios raiz de los dominios y de todos los que contenga (opción -R, recursivo) a «www-data» que es el usuario de Apache.

También deberemos cambiar los permisos para garantizar el acceso de lectura al directorio web general y a los ficheros y directorios que contenga y se puedan servir las páginas solicitadas,

sudo chmod -R 755 /var/www

De esta manera tenemos el servidor web con los permisos necesarios para servir contenidos y para que el usuario pueda crearlos en el directorio conveniente.

Creamos páginas de prueba para cada host virtual

Crearemos un contenido de prueba para comprobar su funcionamiento. Para ello, haremos una página «index.html» para cada sitio web.

Vamos con «weblinus.local». Abrimos un fichero «index.html» con un editor de texto, en este caso «nano».

sudo nano /var/www/weblinus.local/public_html/index.html

Copia y pega el código que viene a continuación en el fichero y cambia los datos por los que quieras.

<html>
  <head>
    <title>weblinus.local</title>
  </head>
  <body>
    <h1>Conseguido! El host virtual <strong> weblinus.local</strong> esta funcionando!</h1>
  </body>
</html>

Guardamos y cerramos el fichero.

Por economía y eficiencia en el trabajo, podemos copiar este fichero y usarlo para el segundo sitio.

sudo cp /var/www/weblinus.local/public_html/index.html /var/www/trufaslaencina.local/public_html/index.html

Hacemos las modificaciones a este fichero.

sudo nano /var/www/trufaslaencina.local/public_html/index.html
<html>
  <head>
    <title>trufaslaencina.local</title>
  </head>
  <body>
   <h1>Conseguido! El host virtual <strong> trufaslaencina.local</strong> esta funcionando!</h1>
  </body>
</html>

Guardamos y cerramos. Y ya tenemos contenido para mostrar con una solicitud al servidor Apache y comprobar si la configuración del host virtual es correcta.

Creamos los ficheros de configuración de los hosts virtuales

Los ficheros de configuración de los hosts virtuales determinan la forma en que el servidor web Apache responderá a las solicitudes que reciba de los distintos dominios que aloja.

Apache viene con un fichero de configuración por defecto «000-default.conf» que utilizaremos como plantilla para crear los que necesitamos. Lo copiamos para crear un fichero de configuración de host virtual para cada dominio a alojar. Primero veamos que opciones de configuración tenemos,

Directivas contenidas en el fichero de configuración del host virtual

La configuración predeterminada de Ubuntu requiere que cada fichero de configuración de host virtual termine con la extensión «.conf». Veamos las directivas que contiene,

  • ServerName → Va a indicar el dominio que debe coincidir con esta configuración de host virtual. Este debería ser el nombre de dominio.
  • ServerAlias → Todos los demás dominios o subdominios que deberían coincidir para este host virtual, como el subdominio www.
  • ServerAdmin → Incluir un correo electrónico en el cual el administrador del sitio pueda recibir correos
  • DocumentRoot → Aquí se indicará el directorio desde el cual Apache servirá los ficheros.
  • 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 va a seguir los enlaces simbólicos.
    • AllowOverride → Va a especificar qué directivas declaradas en el fichero .htaccess pueden anular las directivas de configuración.
  • ErrorLog, CustomLog → Aquí se van a especificar las ubicaciones de los ficheros de registro.

Creamos el primer fichero de configuración de host virtual

En este fichero, personalizaremos los elementos para nuestro primer dominio y añadiremos algunas directivas adicionales. Esta sección de host virtual coincide con cualquier solicitud que se realice en el puerto 80, el puerto HTTP predeterminado.

Comenzaremos con «weblinus.local», lo configuraremos y lo copiaremos para nuestro segundo dominio «trufaslaencina.local», y realizaremos los cambios necesarios.

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/weblinus.local.conf

Abrimos el nuevo fichero con un editor de texto con privilegios root

sudo nano /etc/apache2/sites-available/weblinus.local.conf

El fichero tendrá un contenido similar a este

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Lo modificamos para que quede de este modo,

<VirtualHost *:80>
    ServerName weblinus.local
    ServerAlias www.weblinus.local
    ServerAdmin webmaster@weblinus.local
    DocumentRoot /var/www/weblinus.local/public_html
 
    <Directory /var/www/weblinus.local/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>
 
    ErrorLog ${APACHE_LOG_DIR}/weblinus.local-error.log
    CustomLog ${APACHE_LOG_DIR}/weblinus.local-access.log combined
</VirtualHost>

Creamos el segundo fichero de configuración de host virtual

Procederemos del mismo modo para crear el segundo fichero de configuración de host virtual

sudo cp   /etc/apache2/sites-available/weblinus.local.conf /etc/apache2/sites-available/trufaslaencina.local.conf

sudo nano /etc/apache2/sites-available/trufaslaencina.local.conf

Habilitamos los ficheros de configuración

Una vez guardados los ficheros, tenemos que habilitarlos. Para ello creamos un enlace simbólico desde el fichero de configuración de host virtual al directorio habilitado para los sitios. Utilizamos el comando «a2ensite».

sudo a2ensite weblinus.local

sudo a2ensite trufaslaencina.local

Lo podemos hacer creando manualmente un enlace simbólico

sudo ln -s /etc/apache2/sites-available/weblinus.local.conf /etc/apache2/sites-enabled/

sudo ln -s /etc/apache2/sites-available/trufaslaencina.local.conf /etc/apache2/sites-enabled/

Tenemos que deshabilitar el sitio predeterminado definido en «000-default.conf»

sudo a2dissite 000-default.conf

Y comprobamos la configuración para detectar errores de sintaxis.

sudo apachectl configtest

Si no hay errores, en la terminal veremos un resultado parecido a,

Reiniciamos el servicio Apache para aplicar los cambios,

sudo systemctl restart apache2

Comprobamos el estado del servicio

sudo systemctl status apache2

Deberíamos, si todo ha ido bien, tener el servidor configurado para presentar dos sitios.

Para comprobar que hemos tenido éxito, abrimos un navegador y introducimos la URL http://weblinus.local y deberíamos ver el contenido de la página «index.html» de weblinus.local o http://trufaslaencina.local y veremos,

Configurar el fichero de hosts locales

Si modificamos el fichero «hosts» en el equipo local «localhost» podemos interceptar las solicitudes para los dominios que hemos configurado y apuntarán al servidor VPS. Este procedimiento lo realizaría el servidor DNS si utilizásemos dominios registrados. Esto solo funcionará desde «localhost». Editamos el fichero,

sudo nano /etc/hosts

Aquí debemos añadir la dirección IP pública del servidor seguida del dominio que queremos usar para alcanzar ese servidor. Por ejemplo, y siguiendo nuestra configuración, deberíamos tener el siguiente fichero,

127.0.0.1   localhost
127.0.1.1   guest-desktop
192.168.1.8   weblinus.local
192.168.1.8   trufaslaencina.local

Guardamos y cerramos el fichero.

Esto dirigirá cualquier solicitud de «weblinus.local» y «trufaslaencina.local» en nuestro equipo al servidor que le hemos indicado.

No existe un límite de software en el número de nombres de dominio que Apache puede gestionar. Este vendrá determinado por el hardware, por eso no dudes en crear tantos hosts virtuales como tu servidor pueda manejar.

Y si quieres ver como instalar y configurar un hosting privado sobre Ubuntu 20.04 Server, con Apache, MySQL y PHP, configuración del firewall UFW, y hacer la importación de la aplicación web que tenemos en el hosting, para trabajar en local, en un entorno virtual , sin miedo a romper nada sigue este enlace.

Si tienes algún comentario que hacer, al pie del post tienes un formulario para hacerlo.

Y si quieres contactar conmigo por cualquier otro asunto relacionado con el sitio, o te quieres suscribir para recibir un correo-e una vez al mes con las nuevas publicaciones, en la página de contacto, tienes otro formulario.

Deja una respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.