Cómo crear varios virtual host en Apache con MAMP

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!

Fuente: este post proviene de dryant.com, donde puedes consultar el contenido original.
¿Vulnera este post tus derechos? Pincha aquí.
Creado:
¿Qué te ha parecido esta idea?

Esta idea proviene de:

Y estas son sus últimas ideas publicadas:

Recomendamos

Relacionado

Linux

Si ha administrado un servidor Linux anteriormente, estará familiarizado con la pila LAMP (Linux, Apache, MySQL, PHP) comúnmente utilizada. Sin embargo, Apache, MySQL y PHP a veces pueden ser intensivos en recursos y pueden no ser los mejores para su servidor. En este tutorial, vamos a reemplazar todas y cada una de las partes de la pila, excepto Linux, con una alternativa mejor – Nginx, Mar ...

Linux

Si desea configurar un servidor web (o servidor de streaming) en su equipo Ubuntu, apache es un módulo importante que debe instalar. En este tutorial, le mostraremos cómo instalar y configurar apache para su Ubuntu. Nota : Si sólo quiere tener una configuración rápida del servidor LAMP, siga la guía aquí . Instalación de Apache Conseguir apache en su máquina Ubuntu es fácil. Utilizando el Synaptic ...

http node servidor ...

¡Saludos, apasionados del desarrollo web! Hoy nos sumergiremos en el mundo de Ngrok para exponer dos servidores, uno ejecutando Apache en el puerto 8000 y otro con un servidor Node.js utilizando sockets en el puerto 3000. Puerto 8000: Apache al Descubierto El puerto 8000 será nuestro punto de acceso al servidor Apache. ¡Imagina exponer tu aplicación web Apache al mundo con un solo clic! Ngrok ge ...

Linux

VNC significa Virtual Network Computing y es una aplicación de escritorio compartida que le permite controlar a distancia otro ordenador. Una conexión VNC requiere que se configure un servidor VNC en el sistema remoto y un visor VNC para acceder al servidor. En Ubuntu Hardy Heron, tanto el servidor VNC como el visor vienen preinstalados en el paquete. Configuración del servidor VNC en Hardy Heron ...

Linux

Kliqqqi es un sistema de gestión de contenidos de comunidades sociales que le permite crear comunidades de medios sociales en línea receptivas y bellamente diseñadas. Con Kliqqqi puedes alojar y crear tu propia red social similar a Twitter o Facebook. En este tutorial le mostraremos cómo instalar Kliqqqi en Ubuntu. Requisitos previos Asumiendo que tiene un servidor Ubuntu, necesitará tener las sig ...

Linux

Anteriormente, le hemos presentado a BitTorrent Sync que le permite sincronizar sus archivos de un ordenador a otro utilizando la tecnología Bittorrent. Si tiene su propio servidor web, puede utilizar btsync como herramienta de copia de seguridad para realizar copias de seguridad de los archivos de su ordenador al servidor web. A continuación se muestra cómo puede configurar BitTorrent Sync en su ...

Linux

AWStats es una herramienta de generación de informes de analítica web de código abierto que genera gráficamente estadísticas avanzadas de web, streaming, FTP o servidor de correo. Este analizador de registros funciona como un CGI o desde la línea de comandos y le muestra toda la información posible que su registro contiene en unas cuantas páginas web gráficas. Utiliza un archivo de información par ...

Linux

Si usted está comenzando una tienda en línea y está buscando un CMS de comercio electrónico para ejecutar su tienda, AbanteCart es un carrito de compras gratuito y software de código abierto que usted puede utilizar. Es fácil de configurar y usar y viene con extensiones para ampliar su funcionalidad. En este artículo aprenderá a instalar, configurar y utilizar AbanteCart en Ubuntu. Requisitos Como ...

Linux

Si estás familiarizado con el sistema de control de revisiones Git , lo más probable es que hayas oído hablar de sitios de software social que utilizan Git, como GitHub, Gitorious y Sourceforge. Estos sitios son excelentes para la colaboración, pero ¿qué pasa si quieres alojar un repositorio privado de Git en tu propio sitio web? GitList es una interfaz PHP para Git que embellece y simplifica la n ...

Linux

¿Alguna vez ha querido acceder a sus fotos desde cualquier lugar a través de la Web, pero no ha querido suscribirse a soluciones patentadas como Google Photos, Photo Bucket, etc.? Presentamos Lychee , una herramienta autohospedada que permite a los usuarios gestionar, subir y catalogar sus grandes colecciones de fotos. Funciona en cualquier servidor web que tenga Apache2 (o NGINX), PHP y MySQL. En ...