Si eres desarrollador web que trabajas con Apache en Mac, la configuración de Hosts Virtuales es algo que debes saber, existen herramientas que te pueden ayudar a configurarlos de manera visual y sencilla, pero lamentablemente son de pago, así que si por razones didácticas quieres saber como se configura un «Virtual Host» en Mac Os X, esta guía es para ti. (por cierto las herramientas de pago son MAMP Pro y VirtualHostX)

Si aún no tienes configurado Apache, PHP y MySQL en tu Mac puedes seguir esta guía actualizada para OS X Mavericks sobre cómo configurar Apache, PHP, MySQL y phpMyAdmin.

La configuración de hosts virtuales de Apache en Mac OSX 10.9 Mavericks o Mountain Lion es muy fácil, el proceso de configuración de hosts virtuales se hace más fácil en la Terminal, ya sea usando nano o vi con sudo (como usuario root), o bien puedes usar un editor visual como Text Wrangler que permite el acceso a la carpeta /private/etc haciendo clic en «Mostrar todo» en el cuadro de diálogo de abrir.

vhost en OS X

1. Permitir la configuración de vhosts en Apache editando httpd.conf

Abre el archivo que está en la ruta /etc/apache2/httpd.conf

Busca la líneas que dicen:

# Virtual hosts
#Include /private/etc/apache2/extra/httpd-vhosts.conf

Quita la segunda # para descomentar la línea y que quede de la siguiente manera:

# Virtual hosts
Include /private/etc/apache2/extra/httpd-vhosts.conf

2. Configura un vhost

Abre el archivo ubicado en la ruta /etc/apache2/extra/httpd-vhosts.conf

Este archivo incluye algunos ejemplos de hosts virtuales, por ejemplo hay uno con esta configuración, en la cual te puedes basar para crear tu propio host virtual:

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/usr/docs/dummy-host.example.com"
    ServerName dummy-host.example.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "/private/var/log/apache2/dummy-host.example.com-error_log"
    CustomLog "/private/var/log/apache2/dummy-host.example.com-access_log" common
</VirtualHost>

Podemos tomar el ejemplo anterior y extenderlo, si por ejemplo, quieres un dominio llamado misitio.local, puedes copiar el bloque de texto existente y editarlo para adaptarse:

<VirtualHost *:80>
    ServerName misitio.local
    ServerAlias www.misitio.local
    DocumentRoot "/Users/carlos/Sites/misitio"
    ErrorLog "/private/var/log/apache2/misitio.local-error_log"
    CustomLog "/private/var/log/apache2/misitio.local-access_log" common
    ServerAdmin carlos@carlosleopoldo.com
    <Directory "/Users/carlos/Sites/misitio">
        Options Indexes FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

Aquí estoy creando un vhost para misitio.local (para crear tu propio vhost debes reemplazar donde dice misitio.local por tu propio vhost) y haciendo que la raíz del documento sea la carpeta /Users/carlos/Sites/misitio, también he añadido algunos permisos de directorio y un alias de servidor para utilizar el prefijo «www«, lo que debes cambiar es la ubicación del documento raíz, dirección de correo electrónico y nombre de dominio (misitio.local) para satisfacer tus necesidades. Al finalizar y guarda el archivo.

Ahora que ya tienes configurado tu vhost nos falta un paso, y es suplantar tu dirección IP para que responda a tu dominio (vhost).

3. Suplantar la dirección IP para que apunte a tu dominio personalizado

Con un editor de texto abre el siguiente archivo: /etc/hosts o bien, puedes usar una herramienta visual llamada Gas Maks, pero si elijes usar un editor de texto desde la Terminal, escribe el siguiente comando:

sudo nano /etc/hosts

Agregar el dominio y la IP local (127.0.0.1)

127.0.0.1 misitio.local
127.0.0.1 www.misitio.local

Después de agregar el código en nano presiona ctrl + o y luego Enter para guardar y luego ctrl + x para cerrar nano.

Editar HOSTS en OS X Mavericks

4. Reinicia Apache

Finalmente lo que queda es reiniciar Apache con el siguiente comando en la Terminal:

sudo apachectl restart

Extra: recuperando localhost

Al habilitar los Virtual Hosts en Apache, perdemos el vhost que tenemos por default, ahora ya no es posible acceder directamente a http://localhost pero si podemos acceder a la dirección http://localhost/~usuario (donde usario es tu nombre de usuario en OS X).

Para corregir esto debes abrir el archivo ubicado en: /etc/apache2/extra/httpd-vhosts.conf (el mismo en el que configuramos el vhost), y agrega lo siguiente, antes de cualquier configuración de Host Virtual.

<VirtualHost *:80>
    ServerName localhost
    DocumentRoot /Users/carlos/Sites/
</VirtualHost>

En el código anterior debes reemplazar el DocumentRoot por la ruta en donde tienes tu directorio raíz.

Para finalizar reinicia Apache para que los cambios tengan efecto:

sudo apachectl restart

Eso es todo, si tienes trucos, dudas, sugerencias, dilo en los comentarios.

También puedes seguir esta guía: