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 localhost255.255.255.255 broadcasthost::1 localhostfe80::1%lo0 localhost127.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 hostsInclude /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:80Listen 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!