Mayo 04, 2013
estebanvalerioh
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:
- 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
- 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
- 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.
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!