MAMP virtual hosts – MAC

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

2. 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

3. 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.

1
2
#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.

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!