Lo reconozco, he sido usuario de MAMP y MAMP Pro desde que tengo Mac, es muy cómodo y para empezar en desarrollo no está nada mal, pero depender de él últimamente me estaba trayendo problemas, así que he decidido que puedo dar el salto y gestionar mi servidor local sin necesidad de herramientas externas.

Fue a la hora de instalar Magento 2 cuando me di cuenta de que era un paso necesario. MAMP utiliza la versión 5.5 de MySQL y esta versión de Magento soporta la versión 5.6. Sí, hay por ahí un parche que permite actualizar la versión de MySQL que viene con MAMP, pero creo que es la hora de cambiar y para bien. Este cambio me permitirá aprender. Sólo con la instalación ya lo he hecho, así que os voy a contar mi experiencia.

Haciendo un pequeño resumen lo que yo necesito es tener un servidor local funcionando en mi MacBook, y para ello necesito trabajar con las siguientes tecnologías:

  • Apache (Como servidor HTTP)
  • PHP (Como lenguaje de programación)
  • MySQL (Como servidor de bases de datos)

Podemos empezar por que Mac OS X 10.11 (el sistema operativo que uso) tiene instalada por defecto la versión 2.4.16 de Apache, además de la versión 5.5.29 de PHP así que esto nos ahorra tener que instalar tanto el servidor Apache como PHP, aunque en mi caso sí que he instalado nuevas versiones de PHP, que son las que voy a usar. Son PHP 5.6.18 y PHP 7.0.3 (esta es para jugar).

Instalando múltiples versiones de PHP

Para hacer esto he utilizado brew, es bastante sencillo, en este artículo describe cómo hacerlo. Se hace rápido y sin ningún tipo de complicaciones, además está muy bien explicado y documentado todo el proceso.

De esta forma puedo instalar varios entornos PHP que puedo cambiar a voluntad con el comando

sphp XX 
// XX es el número de versión de PHP al que quiero cambiar, sin puntos.
// De esta forma sphp 70 significa que quiero cambiar a PHP 7.0

Después de esto, también desde brew he tenido que instalar algunas librerías necesarias para que Magento 2 pudiera funcionar en condiciones.

brew install phpXX-intl
brew install phpXX-mcrypt
// Con esto instalamos las librerias de internacionalización y encriptación de PHP

Tras esto he modificado la configuración de uso de memoria modificando los archivos php.ini, como soy un tipo generoso, voy a trabajar con aplicaciones pesadas y tengo RAM de sobra, le he dado 4096Mb como límite de memoria.

//Ponemos como Huso Horario por defecto el de España
 date.timezone Europe/Madrid
 //Reemplazamos el límite de Memoria a 4096Mb
 memory_limit 4096M

Con esto ya tenemos listo (o casi) nuestro entorno web, con Apache y PHP instalado. Ya sólo nos quedaría modificar los virtualhosts de Apache y tendremos todo listo para jugar.

Instalando MySQL

Y es que yo descubrí brew y la vida se me ha hecho mucho más fácil. Instalar Percona (en lugar del MySQL tradicional) me tomó exactamente el tiempo que se tarda en escribir

brew install percona-server

Y ya está, MySQL funcionando. Estoy muy contento con el cambio, puedo mantener mis recursos gestionados a mi manera y sin ningún tipo de problemas. Sólo los que yo mismo me vaya causando, que no serán pocos. De momento ya tengo todos los entornos locales de los proyectos en los que trabajaba con MAMP y funcionan a la perfección.

Esto me ha ayudado a mantener mi equipo limpio y tener el control de los paquetes que se instalan en él.  Lo que no os he contado es que esto forma parte de una puesta a punto que estuve haciendo a mi MacBook (mid 2010), con la que vino una instalación limpia de Mac OS X.

Como veis, tampoco es que haya descubierto la pólvora ni inventado nada, he recopilado enlaces que me han pasado y los he aplicado, recopilado y escrito este artículo. ¿Qué os parece? Fácil, ¿no?

Ah, otra cosa…

Para hacer más sencilla la instalación de los virtualhost de Apache he tomado “prestado” este script de Óscar Recio, que modifica el virtualhost.sh de brew. También llegue al artículo sobre cómo instalar varias versiones de PHP gracias a él, así que este post es culpa suya en cierta parte.

Edits:

#01: Óscar Recio me ha apuntado que no había hablado de la edición del archivo http.conf. Para que sphp funcione correctamente hay que añadir lo siguiente.

LoadModule php5_module /usr/local/lib/libphp5.so
#LoadModule php7_module /usr/local/lib/libphp7.so

Y borrar los anteriores LoadModule php5_module que hubiera comentados.