Hero

Como crear virtual hosts en MAC utilizando MAMP

Mayo 04, 2013

estebanvalerioh
MAC
MAMP

Si queremos trabajar localmente en nuestros proyectos, podemos crear hosts virtuales, de manera que naveguemos por el sitio usando URLs como estamos acostumbrados a hacerlo en los sitios de Internet. Esto lo logramos de la siguiente manera:

  1. Editamos el archivo hosts.

Abrimos el archivo hosts que se ubica en la carpeta etc que está en la raíz. Ejemplo:

$ sudo vi /etc/hosts (Utilizamos sudo para tener permisos de escritura sobre el archivo)

Agregamos una línea nueva e incluimos una linea similar a la siguiente (sustituir la palabra nombre, con el nombre de nuestro proyecto) :

127.0.0.1       nombre.localhost.com

Salvamos el archivo y listo. Vemos un ejemplo de como queda el archivo:

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost
fe80::1%lo0     localhost
127.0.0.1       nombre.localhost.com
  1. Indicamos en httpd.conf de Apache que vamos a usar virtual hosts.

Abrimos el archivo httpd.conf que está ubicado en /Applications/MAMP/conf/apache/httpd.conf

en MAMP 2 Buscamos las líneas que dicen:

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

en MAMP 3 Buscamos las líneas que dicen:

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

y removemos el símbolo: # que está antes de la línea que inicia con la palabra Include. Nos debe quedar de la siguiente forma:

# Virtual hosts
Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
  1. Crear los virtual hosts.

Abrimos el archivo /Applications/MAMP/conf/extra/httpd-vhosts.conf, si el archivo no ha sido antes modificado, lo vamos a encontrar como se muestra a continuación:

#
# Virtual Hosts
#
# If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at 
# <URL:http://httpd.apache.org/docs/2.2/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration.

#
# Use name-based virtual hosting.
#
NameVirtualHost *:80

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/Applications/MAMP/Library/docs/dummy-host.example.com"
    ServerName dummy-host.example.com
    ServerAlias www.dummy-host.example.com
    ErrorLog "logs/dummy-host.example.com-error_log"
    CustomLog "logs/dummy-host.example.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "/Applications/MAMP/Library/docs/dummy-host2.example.com"
    ServerName dummy-host2.example.com
    ErrorLog "logs/dummy-host2.example.com-error_log"
    CustomLog "logs/dummy-host2.example.com-access_log" common
</VirtualHost>

Borramos las lineas de xml, y las cambiamos por las siguientes:

<VirtualHost *:80>
   DocumentRoot /Users/mac/www/
   ServerName localhost
  
   <Directory "/Users/mac/www">
      AllowOverride All
   </Directory>  
</VirtualHost>

<VirtualHost *:80>
   DocumentRoot "/Users/mac/www/MiProyecto"
   ServerName nombre.localhost.com

   <Directory "/Users/mac/www/MiProyecto">
      AllowOverride All
   </Directory> 
</VirtualHost>

El archivo debe quedar similar a la siguiente configuración:

#
# Virtual Hosts
#
# If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at 
# <URL:http://httpd.apache.org/docs/2.2/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration.

#
# Use name-based virtual hosting.
#
NameVirtualHost *:80

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost *:80>
   DocumentRoot /Users/mac/www/
   ServerName localhost
  
   <Directory "/Users/mac/www">
      AllowOverride All
   </Directory>  
</VirtualHost>

<VirtualHost *:80>
   DocumentRoot "/Users/mac/www/MiProyecto"
   ServerName nombre.localhost.com

   <Directory "/Users/mac/www/MiProyecto">
      AllowOverride All
   </Directory> 
</VirtualHost>

En mi caso, todos mis proyectos los tengo dentro de una carpeta llamada www que se encuentra en /Users/mac/, esto no es obligatorio, basta adaptar los paths según en lugar donde tengamos nuestros proyectos en la computadora.

Si decides tener logs personalizados estos por defecto quedaran en el directorio /Applications/MAMP/Library/logs.

Es importante verificar que el puerto escogido para los virtual host coincidan con el puerto definido con la directiva Listen en el archivo http.conf de apache como se muestra a continuación.

#Listen 12.34.56.78:80
Listen 80

Hechos los pasos anteriores, queda reiniciar los servidores del MAMP para que nuestros cambios tengan efecto. Luego abrimos nuestro navegador y colocamos la dirección http://nombre.localhost.com/ para poder trabajar en nuestro proyecto.

proyecto 0

Para futuros sitios, simplemente copiamos, pegamos y adaptamos en el archivo httpd-vhosts.conf, el siguiente XML.

<VirtualHost *:80>
   DocumentRoot "/Users/mac/www/OTROproyecto"
   ServerName otro.localhost.com
</VirtualHost>

Saludos!

Recibe consejos y oportunidades de trabajo 100% remotas y en dólares de weKnow Inc.