En otro tutorial ya hemos visto cómo puedes instalar MAMP para crear un entorno de desarrollo local. Sin embargo, la creación de hosts virtuales o virtualhosts es imprescindible cuando trabajas en múltiples proyectos. Para crearlos, primero tenemos que permitir la creación de hosts virtuales en la configuración de Apache y seguidamente ya podremos crearlos.
Hosts virtuales en Windows con MAMP
A continuación veremos cómo crear hosts virtuales en Windows con MAMP. El proceso difiere un poco de cómo crearías hosts virtuales en una instalación normal de Apache en Windows, aunque no demasiado, ya que solo cambiarán los directorios.
Archivo httpd-vhosts.conf
Lo primero que debes hacer es incluir el archivo httpd-vhosts.conf
en la configuración de Apache, que es en donde definiremos los hosts virtuales. Para ello sigue los pasos que ves a continuación. Decir que solamente deberás realizar esta configuración la primera vez que agregas un host virtual.
Accede al directorio de instalación de MAMP, que por defecto es el directorio c:/MAMP
. Luego navega hasta el directorio conf ➜ apache y edita el archivo httpd.conf
con cualquier editor de texto.
Seguidamente busca la siguiente línea, en la sección # Virtual hosts
:
#Include conf/extra/httpd-vhosts.conf
Lo que debes hacer es eliminar el caracter de sostenido del inicio de la línea para así borrar el comentario de la línea:
Include conf/extra/httpd-vhosts.conf
Si el Apache no detecta el archivo tendrás que usar la ruta absoluta hacia el mismo, por lo que, si partimos de que MAMP está instalado en el directorio C:/MAMP
, la ruta absoluta al archivo de hosts será C:/conf/extra/httpd-vhosts.conf
:
Include C:/MAMP/conf/extra/httpd-vhosts.conf
Si no existe dicho archivo, tendrás que crearlo. Puedes copiar y pegar una copia desde el directorio bin ➜ apache ➜ conf ➜ extra.
Ahora vamos a cambiar la configuración por defecto de los SymLinks para evitar que tengas que configurar este valor en todos tus hosts virtuales. Para ello, busca el siguiente bloque en el mismo archivo:
<Directory />
Options Indexes FollowSymLinks
AllowOverride None
</Directory>
Debes cambiar el valor de la opción AllowOverride
por All
:
<Directory />
Options Indexes FollowSymLinks
AllowOverride All
</Directory>
Finalmente guarda el archivo.
Crea y configura un host virtual
Para agregar un host virtual debes iniciar MAMP y asegurarte de que el directorio que se usa por defecto es el directorio c:/MAMP/htdocs
. Seguidamente, edita de nuevo el archivo httpd-vhosts.conf
y agrega el siguiente código, reemplazando dominio.localhost
en la opción ServerName por el nombre del dominio que quieras usar con tu virtualhost y /ruta/hasta/el/directorio
en la opción DocumentRoot
por la ruta completa hasta la carpeta en donde están los archivos de tu proyecto:
<VirtualHost *:80>
ServerName dominio.localhost
DocumentRoot "/ruta/hasta/el/directorio"
</VirtualHost>
Es más que recomendable que el dominio que escojas como nombre del servidor tenga la extensión .localhost
para evitar presentes y futuros problemas. De lo contrario es posible que no puedas acceder al dominio especificado desde tu navegador.
Siguiendo el esquema anterior, vamos a crear el host virtual miproyecto.localhost
y lo vamos a enlazar con el directorio C:/Users/edu/hosts/miproyecto
. La configuración sería la siguiente:
<VirtualHost *:80>
ServerName miproyecto.localhost
DocumentRoot "C:/Users/edu/hosts/miproyecto"
</VirtualHost>
Tal y como hemos configurado el host virtual de nuestro ejemplo, tendríamos que acceder a la URL miproyecto.localhost
para acceder a él desde el navegador, ya que es el valor de la opción ServerName. Apache buscará los archivos de este proyecto en el directorio C:/Users/edu/hosts/miproyecto
especificado en la opción DocumentRoot.
Agrega el dominio al archivo de hosts
Por último todavía tenemos que agregar el dominio que hemos especificado el archivo de hosts del sistema operativo para que lo reconozca como local. Para ello, sigue los siguientes pasos, dependiendo de tu sistema operativo.
En Windows debes acceder al directorio C:\WINDOWS\system32\drivers\etc\
, abrir el archivo /hosts
y agregar la siguiente línea:
127.0.0.1 miproyecto.localhost
Finalmente guarda el archivo.
Reinicia MAMP y ahora, si accedes a la URL miproyecto.localhost
ya deberías ver el proyecto o los contenidos del directorio que hemos especificado en la creación del host.
Hosts virtuales en Mac con MAMP
A continuación veremos cómo crear hosts virtuales en Mac con MAMP. El proceso solamente cambia un poco con respecto a cómo crearías hosts virtuales en una instalación normal de Apache en Mac.
Archivo httpd-vhosts.conf
Lo primero que debes hacer es incluir el archivo httpd-vhosts.conf
en la configuración de Apache, que es en donde definiremos los hosts virtuales. Para ello sigue los pasos que ves a continuación. Decir que solamente deberás realizar esta configuración la primera vez que agregas un host virtual.
Accede al directorio Applications ➜ MAMP ➜ conf ➜ apache mediante Finder y edita el archivo httpd.conf
que verás en su interior con cualquier editor de texto.
Ahora busca la siguiente línea, en la sección # Virtual hosts
:
#Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
Elimina el caracter de sostenido del inicio de la línea para así borrar el comentario de la línea:
Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
Ahora vamos a cambiar la configuración de los SymLinks que se usa por defecto. Busca la opción AllowOverride
:
<Directory />
Options Indexes FollowSymLinks
AllowOverride None
</Directory>
Debes cambiar el valor de la opción AllowOverride
por All
:
<Directory />
Options Indexes FollowSymLinks
AllowOverride All
</Directory>
Y finalmente guarda el archivo.
Crea y configura un host virtual
Para agregar un host virtual debes iniciar MAMP y asegurarte de que el directorio que se usa por defecto es el directorio Applications/MAMP/htdocs
. Luego debes editar el archivo httpd-vhosts.conf
y agregar el código que ves a continuación, reemplazando dominio.localhost
en la opción ServerName por el nombre del dominio que vas a utilizar con tu virtualhost, y /ruta/hasta/el/directorio
en la opción DocumentRoot
por la ruta de la carpeta en donde está tu proyecto:
<VirtualHost *:80>
ServerName dominio.localhost
DocumentRoot "/ruta/hasta/el/directorio"
</VirtualHost>
Es recomendable que el dominio local de tu host virtual tenga la extensión .localhost
para así evitar problemas. De lo contrario es posible que no puedas acceder al dominio especificado desde tu navegador.
Siguiendo el esquema anterior, vamos a crear el host virtual miproyecto.localhost
y lo vamos a enlazar con el directorio /Users/edu/hosts/miproyecto
. La configuración sería la siguiente:
<VirtualHost *:80>
ServerName miproyecto.localhost
DocumentRoot "/Users/edu/hosts/miproyecto"
</VirtualHost>
Tendríamos que acceder a la URL miproyecto.localhost
para acceder a él desde el navegador, ya que es el valor de la opción ServerName. Apache buscará los archivos de este proyecto en el directorio /Users/edu/hosts/miproyecto
especificado en la opción DocumentRoot.
Agrega el dominio al archivo de hosts
Por último todavía tenemos que agregar el dominio que hemos especificado el archivo de hosts del sistema operativo para que lo reconozca como local. Tendremos que hacer uso de la consola. Si nunca la has utilizado, puedes consultar el tutorial de introducción a la línea de comandos de Mac. Para ello, sigue los siguientes pasos:
- Abre la terminal de comandos y ejecuta el siguiente comando para abrir el archivo de configuración de hosts de macOS:
sudo pico /etc/hosts
Seguramente se te pida tu contraseña de administrador cuando lo abras. Introdúcela.
- Debes agregar la línea siguiente al final del archivo:
127.0.0.1 miproyecto.localhost
- Por último guarda el archivo pulsando las teclas CTRL+O y reinicia los servicios de MAMP.
Tras reiniciarlo, ya deberías ver el proyecto de tu directorio si accedes a la URL miproyecto.localhost:8888
.
Cambia el puerto por defecto de MAMP
El puerto por defecto que usará MAMP en Mac es el puerto 8888
, que tendrás que especificarlo tras el dominio que hayas configurado como URL. Si quieres puedes cambiar el puerto del puerto 8888
al puerto 80
, que es el puerto HTTP estándar, de modo que no tengas que especificarlo. Para ello sigue estos pasos:
- Edita de nuevo el archivo
/Applications/MAMP/conf/apache/httpd.conf
. - Busca la línea
Listen 8888
. Debes cambiar el puerto888
por el80
de modo que la línea quede así:Listen 80
- Luego busca la línea
ServerName localhost:8888
. Vambia también el puerto888
por el80
de modo que la línea quede así:ServerName localhost:80
- Guarda el archivo, inicia MAMP y desde el menú superior accede a MAMP ➜ Preferences ➜ Ports. Aquí, cambia el puerto de Apache del puerto
80
al puerto8888
. De esta forma, el puerto de Apache será el80
, el de Nginx el8888
y el de MySQL el3306
.
- Seguidamente reinicia MAMP y accede a la URL
miproyecto.localhost
, en la que ya se debería mostrar tu proyecto.
Cuando cambias el puerto de Apache al 80 no es necesario especificarlo, ya que este puerto es el que se usa por defecto en cualquier navegador, por lo que se sobreentiende que es el 80.
Y esto ha sido todo.