Configurar “Virtual Hosts” en MAMP

Cuando usamos MAMP, normalmente apuntamos nuestro servidor apache a una carpeta donde se encuentran una o en algunos casos, varias instalaciones de páginas web (Document Root).
Si nuestro Document Root es una carpeta con varias instalaciones, por ejemplo htdocs, cuando accedamos a localhost desde nuestro navegador vamos a obtener una lista con todas las instalaciones disponibles en esa carpeta pero con direcciones de acceso a cada instalación tipo: http://localhost/prueba1 aunque hayamos configurado correctamente nuestro /etc/hosts, entonces, ¿cómo podemos hacer para tener funcionando en local varias web y todas ellas configuradas con su posterior dirección? Utilizando Virtual Hosts.

VirtualHosts quiere decir que tenemos varios sitios web (www.prueba1.es, www.prueba2.es, …) funcionando al mismo tiempo en nuestra máquina y para ellos usaremos VirtualHosts con la configuración basada en diferentes nombres de acceso.

En mi caso yo quiero trabajar a la vez en www.drupal7.es y en marysalento.com dos instalaciones que tengo en mi máquina. (Instaladas en local). Y quiero poder trabajar en las dos a la vez si estar cambiando constantemente la configuración del MAMP sobre el Document Root de apache. ¿Cómo lo hago?

EL primer paso es configurar las DNS de nuestro ordenador local, necesitaremos editar el archivo /etc/hosts ,lo podemos hacer desde una terminal y precedido del comando sudo. Añadiremos el dominio deseado a continuación de 127.0.0.1.
Podemos utilizar por ejemplo el editor pico.

sudo pico /etc/hosts 

e introducimos el dominio de nuestras páginas, yo la he llamado www.drupal7.es y marysalento.com (Para salir del editor ctrl+X, y Y para guardar los cambios).

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##

127.0.0.1  marysalento.com  www.drupal7.es
255.255.255.255	broadcasthost
::1             localhost
fe80::1%lo0	localhost

Una vez hemos realizado el cambio en el archivo /etc/hosts podemos comprobar que funciona haciendo un ping a nuestra dirección, escribiendo en el terminal:

ping www.drupal7.es
PING www.drupa7.es (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.157 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.141 ms

 

ping marysalento.com
PING marysalento.com (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.167 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.142 ms

y vemos que hay respuesta siendo la IP la nuestra propia 127.0.0.1. Si es así quiere decir que lo hemos hecho bien :)

Una vez añadida la dirección tenemos que editar la configuración de apache referente a los virtual hosts. Lo podemos hacer desde un terminal y lo encontramos en /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf, de nuevo lo podemos editar con pico:

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

Tenemos que configurar el ServerName en nuestro caso www.drupal7.es y añadir la dirección que hemos puesto en /etc/hosts
En el DocumentRoot tenemos que poner la carpeta donde tenemos instalada nuestra página web “/Applications/MAMP/htdocs/drupal7″
Podemos también realizar configuraciones diferentes para los logs, de modo que los logs de una determinada página nos salga en su archivo seleccionado: ErrorLog “logs/drupal7-error_log” CustomLog “logs/drupal-access_log” common.
E idéntico para el caso de marysalento.com
Añadimos un nuevo bloque con esta configuración.
(Recuerda: Para salir del editor pico ctrl+X, y para guardar los cambios ctrl+Y) :)

#VirtualHost para marysalento.es
<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "/Applications/MAMP/htdocs/marysalento"
    ServerName marysalento.es
    ErrorLog "logs/marysalento-error_log"
    CustomLog "logs/marysalento-access_log" common
</VirtualHost>

#VirtualHost para www.drupal7.es
<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot "/Applications/MAMP/htdocs/drupal7"
    ServerName www.drupal7.es
    ErrorLog "logs/drupal7-error_log"
    CustomLog "logs/drupal7-access_log" common
</VirtualHost>
 

Con esta configuración ya puedes probar a acceder desde tu navegador a tu dirección (en mi caso www.drupal7.es) y ver que todo funciona. También puedes acceder a tu otra dirección (en mi caso a marysalento.com) y ver que también funciona.

Tal vez te preguntes por los demás valores de configuración del Apache. Los valores que no hemos definido en el Virtual Hosts se tomarán de la configuración por defecto de apache que se encuentra en /Applications/MAMP/conf/apache/httpd.conf
Puedes añadir más configuraciones a tu VirtualHosts, la configuración que hemos definido aquí es una configuración básica.

Genial :)
Ya podemos trabajar en www.drupal7.es y en marysalento.com a la vez.
¿Te acuerdas de la configuración de los logs que hemos añadido en el VirtualHosts? Pues imagina que estás trabajando en las dos páginas a la vez y tienes un problema en las dos, puff que lio!! ¿y ahora mirando los logs cómo sabes cuál es de www.drupal7.es y cuál de marysalento.com? pues para eso hemos configurado los logs en diferentes archivos.
Imagina que quieres ver lo que está fallando en www.drupal7.es sólo tienes que escribir en el terminal:

tail -f /Applications/MAMP/logs/drupal7-error_log

y mirar la salida del archivo. (Para salir ctrl+C)

4 comentarios para “Configurar “Virtual Hosts” en MAMP”

  • Muy util, lo aplicaré ahora que estoy empezando con Drupal.
    Un saludo

  • toti:

    Me he vuelto loco añadiendo, modificando, cambiando, y suprimiendo directivas al httpd.conf de Apache del… OS X!.
    Y… resulta que era más sencillo que todo esto (mira que no caer yo en el virtual host de Apache de… MAMP. Si llegaré a ser borrico!).
    Sólo hay que saber donde buscar… y… como hacer la pregunta, claro. Por que mira que he buscado y rebuscado por todos los internetes del mundo mundial. Hasta he estado a puntito de tirar la toalla. Y lo pero es que… ya me veía contratando un servicio externo de hosting ante la imposibilidad de usar mi servidor como tal con MAMP.
    No es que la cosa fuera tan traumática (por la cosalapasta) pero… me fastidiaba no poder salirme con la mía…, leñe!.
    Hasta he llegado a instalar todo un MySQL en el Mac (y encima me he tenido que pelear con los shell para configurarlo correctamente).

    Gracias Maria… genial solución

  • Sabid Antonio Barahona:

    Genial

    Explicas de una forma tal clara, que te lo agradezco, marysalento

  • juan:

    Es posible que tengáis que modificar el httpd.conf para descomentar la línea que incluye los vhosts (buscad “# Virtual hosts” en el archivo)

Deja un comentario