Cómo crear varios virtual host en Apache con MAMP

por 15 Jul 2021Programación0 Comentarios

VirtualHosts en apache
Compártelo en tus redes sociales. Gracias!

Si desarrollas páginas web, es posible que uses un servidor local del tipo XAMP, MAMP, WAMP, etc…

El uso de un servidor local, además de ser necesario para procesar el código PHP, nos permite trabajar cómodamente en nuestro ordenador, y una vez terminado el trabajo a desarrollar, subir el proyecto realizado a un servidor VPS, dedicado o hosting compartido, para que pase a estar accesible para el mundo entero.

Pero en cuanto subes tu proyecto a internet, tienes que empezar a retocar el código cambiando la URL que has estado usando del tipo http://localhost:8888/misuperweb por el dominio real que tendrá el proyecto del tipo https://www.misuperweb.com.

Para evitar estos «arreglos» o minimizarlos, una solución es usar host virtuales, o virtual hosts.

¿Que es un host virtual en Apache?

Los virtual host en Apache nos permiten acceder a múltiples páginas web con sus respectivos dominios, que están alojadas en un mismo servidor con una sola IP.

Veámoslo con un ejemplo: En un hosting compartido que tiene una sola dirección IP hay 3 páginas web de diferentes clientes. Estas webs son:

  • www.pajarosdelmundo.com
  • www.cosasparaperros.es
  • www.casasparahormigas.net

Todas ellas tienen la misma direccion IP: 185.10.15.20. Pero sin embargo, cuando accedemos a www.pajarosdelmundo.com accedemos a la web de www.pajarosdelmundo.com y no a las otras web. ¿Porque? Pues por que el hosting compartido tiene configurado 3 virtualhost, uno para cada uno de las webs que hay alojadas, y así sabe que si alguien accede a www.pajarosdelmundo.com tiene que redirigir al usuario a la carpeta donde está alojada la página web de www.pajarosdelmundo.com y no a ninguna otra.

¿Debería usar virtual hosts en mi servidor local?

Pues obviamente, no es una obligación pero si ofrece muchas ventajas hacerlo… Por ejemplo:

  • Si solo estás trabajando en un proyecto, puedes crear y configurar un virtual host en Apache para poder acceder a tu proyecto, con la misma dirección URL que tendrá el proyecto final. De esta manera al subir la web al hosting o VPS no tendrás que estar modificando código para cambiar las URL de http://localhost/miweb a www.miweb.com
  • Si estás trabajando en varios proyectos de forma simultánea, y quieres configurar varios virtual hosts en apache, conseguirás tener una dirección diferente para cada uno de ellos.

¿Cómo crear y configurar vhosts en Apache?

Veamos paso a paso como crear varios virtual host en apache en esta ocasión lo haremos en un Mac con MAMP instalado:

1. Redirigir la URL que queremos usar a nuestro ordenador

Lo primero que tendremos que hacer, es decirle a nuestro ordenador, que cuando yo ponga www.misuperweb.com en el navegador, no se vaya a internet a esa URL o en el caso de que no la encuentre se ponga a buscarla en Google.

Para ello lo que haremos será redirigirla a nuestro ordenador, ya que es allí donde estará alojada nuestra web.

¿Pero cuál es la dirección de mi ordenador?

Todos los ordenadores tienen una dirección IP que es la propia máquina. Esa dirección es siempre 127.0.0.1. Es decir, si yo pongo 127.0.0.1 en el navegador de mi Macbook, el navegador se irá mi propio Macbook. También se conoce como localhost.

Obviamente, si no tengo un servidor web ejecutándose en mi ordenador, no encontrará nada y el navegador te dará un error del tipo 404 Not found (o similar)

Una vez sabemos ya que nuestro ordenador tiene la dirección IP 127.0.0.1, tenemos que decirle que www.misuperweb.com apunte a dicha dirección.

¿Como redirigimos una url cualquiera a nuestro ordenador?

El modo mas sencillo de hacerlo es editando el archivo hosts.

El archivo hosts es un archivo que indica a donde tienen que apuntar las direcciones que le indiquemos.

Tiene una estructura muy básica, compuesta por dos columnas:

  • En la primera columna se pone la dirección a la cual queremos redirigir
  • En la segunda columna se pone la dirección que queremos redirigir
Configurar archivo hosts en Mac
Configuracion archivo hosts en Mac

Como se puede ver en la imagen, cuando ponga localhost, redirigirá a127.0.0.1, cuando ponga misuperweb.com redirige a 127.0.0.1 (mi ordenador) y cuando ponga broadcasthost redigirá a 255.255.255.255 (todos los ordenadores de mi red)

Lo único que he hecho ha sido modificar el archivo hosts añadiendo la última linea.

¿Como modificar el archivo hosts en Mac?

Para modificar el archivo hosts en Mac lo mejor es hacerlo por terminal, ya que el archivos hosts solo puede modificarse por un usuario administrador.

Por lo tanto abrimos el terminal, y ponemos:

sudo nano /etc/hosts

nos pedirá la contraseña de nuestro usuario y se abrirá el archivo hosts.

Nos dirigimos al final del archivo y añadimos la línea

127.0.0.1          misuperweb.com

En el caso que quieras añadir mas de un proyecto añadelos también en otras líneas. por ejemplo así:

127.0.0.1          misuperweb.com
127.0.0.1          casasparahormigas.net
127.0.0.1          cosasparaperros.es

Guarda el archivo con ctrl+x y confirmando el guardado. A partir de ahora cada vez que ingreses una de las tres URL redirigirán a tu máquina.

Pero aún queda trabajo por hacer. Hasta ahora lo único que hemos hecho ha sido redirigir de una dirección a otra. Apache no sabe que la petición de cada una de las webs va a un sitio diferente. Ésto lo vamos a hacer en el siguiente paso.

2. ¿Cómo configurar virtualhosts en Apache en MAMP?

En este paso lo que haremos será indicarle a Apache que vamos a usar host virtuales por un lado, y por otro configurar cada uno de los hosts que vamos a usar.

Indicar a Apache que vamos a usar Hosts Virtuales

Primeramente recuerdo que tenemos que tener instalado MAMP.

Ahora tenemos que editar el archivo de configuración de Apache en MAMP. Ese archivo es el archivo httpd.conf que se encuentra en: sudo nano /Applications/MAMP/conf/apache/httpd.conf

En el caso que no tengas el archivo en esa ubicación por que tengas una versión diferente de MAMP y haya cambiado la ubicación, puedes buscar el archivo con el comando:

sudo find /Applications/MAMP/ -iname "httpd.conf"

y te aparecerá en la ubicación en la que está alojado dicho archivo.

Lo que tenemos que modificar en el archivo es una línea de configuración. Lo puedes hacer con terminal o con un editor de texto, pero ten en cuenta que el archivo al ser un archivo de sistema, tendrás que abrirlo como administrador, si no no te dejará guardarlo.

Yo lo haré por terminal directamente con la orden sudo para ecitar esos problemas de permisos. Así que en el terminal tecleo esto:

sudo nano /Applications/MAMP/conf/apache/httpd.conf 

y en el archivo en cuestión buscaremos la línea que pone esto:

# Virtual hosts
# Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf

Esta linea está casi al final del archivo (20-30 lineas últimas mas o menos), y tenemos que descomentar la línea que empieza por Include. Para descomentar una línea se hace eliminando la almohadilla. Así es como tiene que quedar:

# Virtual hosts
Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf

Guardamos con ctrl+x y confirmamos los cambios.

Con este paso le hemos dicho a Apache que vamos a usar varios virtual host

Configurar dos virtual host en Apache

Ahora vamos a configurar dos virtual host en apache. Podemos configurar sólo uno, o 25. Pero para el ejemplo nos vale con dos.

Si somos un poco observadores, habremos deducido que la linea que hemos descomentado en el paso anterior lo que hace es incluir el archivo httpd-vhosts.conf para tener en cuenta lo que hay en ese archivo escrito.

Pues lo que vamos a hacer ahora es precisamente editar ese archivo. Así que volvemos a teclear en el terminal:

sudo nano /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf

El archivo en cuestión nos muestra un par de ejemplos predefinidos de virtual hosts:

ejemplo-virtual-host
Ejemplos virtualhosts

Explicación de los campos de un virtualhost

Vamos a analizar que significan cada una de las lineas que se muestran en la imagen anterior.

  • Todas las lineas que empiezan con # son comentarios. Por lo tanto solo sirven para darnos información.
  • La línea NameVirtualHost *:80 indica que cualquier URL que entre por el puerto 80 puede ser un virtualhost
  • La línea <VirtualHost *:80> indica el comienzo de un host virtual que vamos a crear y por lo tanto la línea </VirtualHost> indica el final de un virtual host. Por lo tanto en la imagen se ven dos virtualhost en Apache configurados.
  • La línea ServerAdmin indica el email del administrador del virtualhost en cuestión. Es el email donde Apache mandará las notificaciones al respecto de ese virtualhost. No es un campo obligatorio.
  • La siguiente línea DocumentRoot «/Applications/MAMP/Library/docs/dummy-host.example.com» es la ubicación donde se encuentra el proyecto o página web que estamos creando. Esta línea SI es obligatoria.
  • La línea de ServerName dummy-host.example.com indica la URL que queremos usar para dirigirnos al proyecto indicado en la línea anterior. Esta línea SI es obligatoria.
  • las dos últimas líneas indican la ubicación donde se almacenarán los logs del proyecto. No son obligatorias.

Sabiendo todo esto, será facil configurar dos virtualhost en Apache. Simplemente tendremos que añadir las siguientes líneas:

<VirtualHost *:80>
    DocumentRoot "/Applications/MAMP/htdocs/misuperweb"
    ServerName misuperweb.com
</VirtualHost>

Es muy sencillo: Le decimos la ubicación donde tenemos nuestra web guardada, y le decimos a través de que URL vamos a acceder a ella.

Las demás líneas no son necesarias ponerlas, aunque si puedes ponerlas de forma personalizada si las necesitas.

Adicionalmente podemos añadir uno o varios alias:

<VirtualHost *:80>
    DocumentRoot "/Applications/MAMP/htdocs/misuperweb"
    ServerName misuperweb.com
    ServerAlias www.misuperweb.com
</VirtualHost>

Con la línea ServerAlias www.misuperweb.com le estamos indicando a Apache que si accedemos a www.misuperweb.com, es lo mismo que si accedemos a misuperweb.com. Ambas URL nos llevarán a la web alojada en /Applications/MAMP/htdocs/misuperweb

Finalmente añadiremos otro virtualhost mas para hacer pruebas:

<VirtualHost *:80>
    DocumentRoot "/Applications/MAMP/htdocs/casashormigas"
    ServerName casasparahormigas.es
    ServerAlias www.casasparahormigas.es
</VirtualHost>

3. Guardar cambios y reiniciar servidor Apache.

Ya está todo configurado correctamente. Solo nos queda guardar los cambios en el archivo httpd-vhosts.conf (recuerda que se hace con ctrl+x y confirmando los cambios) y una vez hecho todo esto, nos quedará reiniciar el servidor Apache.

¿Cómo reiniciar el servidor apache en MAMP?

La manera de reiniciar el servidor Apache en MAMP es tan simple como abrir MAMP y darle al botón de detener servidores. En la versión que estoy usando yo de MAMP pone simplemente «stop»:

Reiniciar Apache MAMP
Reiniciar Apache MAMP

Cuando vuelvas a iniciar el MAMP, ingresa en tu navegador la URL misuperweb.com y deberías ver el archivo index.html que tengas alojado en la carpeta /Applications/MAMP/htdocs/misuperweb. De igual manera, al ingresar la URL www.casasparahormigas.es deberías ver el proyecto que tengas alojado en la carpeta /Applications/MAMP/htdocs/casashormigas

De esta manera podrás trabajar con nombres de dominios finales, y con varios proyectos simultáneamente en tu ordenador.

Si tienes cualquier duda deja un comentario y te responderé lo antes posible!

Espero que os haya sido de utilidadad este tutorial!

Compártelo en tus redes sociales. Gracias!

Artículos relacionados

<a href="https://dryant.com/author/dryant/" target="_self">dryant</a>

dryant

Webmaster de dryant.com

Informático, Maker, Inversor amateur, mente inquieta... Me encanta programar, esquiar, aprender, crear, bucear y jugar al baloncesto.

0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Ver más

  • Responsable: Pedro Blanch Bejarano.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio. El Titular ha contratado los servicios de alojamiento web a IONOS que actúa como encargado de tratamiento.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para fines de afiliación y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Ver Política de cookies
Privacidad