Page cover

Creación de un VirtualHost en LAMP

El virtual Host nos permitirá acceder a varias webs desde una sola máquina virtual con Apache

Los virtual hosts pueden ser:

  • Basados en IP: cada host deberá tener una IP diferente

  • Basados en nombres: cada host tendrá un nombre de dominio.

En este caso realizaremos la configuración según el nombre lo cual ahorra IPs pero tendremos que apuntar el DNS.

Crear host virtual en Linux

Para realizar el virtualhost, primero hay que crear una carpeta para tu dominio con esta estructura llamándola como el dominio que te interesa:

sudo mkdir /var/www/your_domain

A continuación, vamos a asignar propiedad de lectura al usuario actual con la variable de entorno $USER:

sudo chown -R $USER:$USER /var/www/your_domain

También debemos modificar un poco los permisos para asegurarnos de que se permite el acceso de lectura al directorio web general y a todos los archivos y carpetas que contiene para que las páginas se puedan servir correctamente:

sudo chmod -R 755 /var/www

Luego, abre un nuevo archivo de configuración en el directorio de Apache sites-available usando un editor de línea de comandos como es "nano":

sudo nano /etc/apache2/sites-available/your_domain.conf

Esto creará un nuevo archivo en blanco. Pegue en la siguiente configuración básica entre la que se encuentra la información del puerto web HTTP y los nombres de dominio:

/etc/apache2/sites-available/your_domain.conf
<VirtualHost *:80>
    ServerName your-domain.com
    ServerAlias www.your-domain.com
    ServerAdmin webmaster@your-domain.com
    DocumentRoot /var/www/your-domain/public_html

    <Directory /var/www/your-domain/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/yourdomain-error.log
    CustomLog ${APACHE_LOG_DIR}/yourdomain-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 o subdominios que deben coincidir con este host virtual, como el subdominio www.

  • DocumentRoot: El directorio desde el que Apache servirá los archivos de dominio.

  • Options: Esta directiva controla qué características de servidor están disponibles en un directorio específico.

    • -Indexes: impide las listas de directorios.

    • FollowSymLinks: Cuando esta opción está habilitada, Apache seguirá los enlaces simbólicos.

  • AllowOverride: especifica qué directivas declaradas en el archivo htaccess. pueden invalidar las directivas de configuración.

  • ErrorLog, CustomLog: especifica la ubicación de los archivos de registro log.

Sigue el ejemplo como se muestra aquí:

Ejemplo de archivo conf

Guarda y cierra el archivo cuando hayas terminado. Si estás utilizando nano, puedes hacerlo presionando CTRL+X y ENTER

Con esta configuración, le estamos diciendo a Apache que sirva como directorio raíz web.

El primer paso para que funcione el host personalizado es deshabilitar el sitio web predeterminado que viene instalado con Apache. Para hacerlo, escribe:

sudo a2dissite 000-default.conf

Ahora puede utilizar a2ensitepara habilitar el nuevo host virtual:

sudo a2ensite your-domain.conf

Para asegurarse de que el archivo de configuración no contiene errores de sintaxis, ejecute:

sudo apache2ctl configtest

Aparecerá un mensaje como este:

La sintaxis es correcta pero falta el archivo index.html

Finalmente, vuelva a cargar Apache para que estos cambios surtan efecto:

sudo systemctl reload apache2

El nuevo sitio web http://server_domain ahora está activo, pero la raíz web sigue vacía así que de momento no mostrará nada, puedes instalar un CMS ahora o añadir tus archivos web de HTML y CSS.

Prueba de dominio

Crea un archivo index.html en esta ubicación /var/www/your_domain/public_html para que podamos probar que el host virtual funciona como se espera:

nano /var/www/your_domain/public_html/index.html

Incluya el siguiente contenido en este archivo:

<html>
  <head>
    <title>Tu primer paso con Apache</title>
  </head>
  <body>
    <h1>Hola mundo!</h1>
    <br>
    <p>Esta es la landing page de <strong>your_domain</strong>.</p>
  </body>
</html>

Ahora ves a tu navegador y accede a la dirección IP del servidor una vez más:

http://IP

Verás una página como esta:

Página de AlexPrueba

Configuración del archivo de hosts locales (opcional)

Para poder utilizar dominios personalizados en vez de dominios registrados de DNS, al menos puedes probar la funcionalidad de este proceso modificando temporalmente el archivo hosts en tu equipo local.

Esto forzará cualquier solicitud para los dominios que configuró y los dirigirá a tu servidor, tal como lo haría el sistema DNS si estuviera utilizando dominios registrados. Sin embargo, esto solo funcionará desde su computadora y es simplemente útil para fines de prueba.

Para equipos Mac o Linux, edita el siguiente archivo local:

sudo nano /etc/hosts

Para máquinas con Windows:

  1. Localiza el icono del Bloc de notas.

  2. Haz click derecho sobre el icono y selecciona Ejecutar como administrador.

  3. Accede al menú Archivo > Abrir , "todos los archivos" y edita el siguiente archivo de tu ordenador: C:\Windows\System32\drivers\etc\hosts

Ya sea con Linux o con Windows, añade las líneas con la IP del nuevo servidor seguida del dominio, por ejemplo:

11.123.212.1 midominio.com
11.123.212.1 www.midominio.com

Ahora, cuando accedas a "midominio.com", lo harás a través de la IP que hayas indicado en el archivo (11.123.212.1) en lugar de a la que realmente apunte el dominio:

Ejemplo de archivo host, recuerda quitar los "#" que lo convierten en comentario

Ahora ves a tu navegador y prueba a acceder al servidor una vez más a través del dominio nuevo:

http://midominio.com

Deberías poder ver otra vez la página anterior:

Última actualización