Instalando Symfony en Mac OSX

Una de los cosas que tení­a pendientes por hacer en el MacBook era instalar Apache+Mysql+PHP y probar Symfony, uno de los más famosos frameworks para el desarrollo rápido de aplicaciones web en PHP.

Lo primero no pudo ser más fácil, pero lo segundo ya me costó bastante más, por lo que me he decidido a escribir mi experiencia, por si a alguien le sirve.

Para instalar Apache+MySQL+PHP no hay más que descargarse MAMP (actualmente, versión 1.7) e instalarlo como cualquier otra aplicación en OSX. Una vez instalado podremos comprobar su funcionamiento ejecutando la aplicación, y viendo como lanza los servicios de apache y mysql, junto a la página de inicio de Apache en el navegador.

El problema viene con Symfony. Intenté instalarlo tal como lo describen en esta web, pero, primero por mi inexperiencia con Mac, y después por diferentes errores enlazando librerí­as, no fui capaz de hacerlo funcionar (aunque sí­ me ha servido como excelente base para este documento).

Lo primero que hay que hacer es abrir un terminal y añadir al path de nuestro sistema las siguientes rutas, editando para ello el archivo /etc/profile (válido para todos los usuario del sistema):


# sudo nano -w /etc/profile

Una vez abierto, modificamos la lí­nea del PATH y añadimos la de DYLD_LIBRARY_PATH:

PATH="/Applications/MAMP/bin:/Applications/MAMP/bin/php5/bin:
/bin:/sbin:/usr/bin:/usr/sbin"

export PATH

export DYLD_LIBRARY_PATH="/Applications/MAMP/Library/lib"

y guardamos el fichero (ctrl+x en el editor nano, se puede utilizar cualquier otro editor a tu gusto ;) ). Fijáos que añadimos las rutas ANTES del path que ya existí­a. De esta forma nos aseguramos que los comandos que utilizaremos son los que acabamos de instalar con MAMP (muy importante, ya que si no, utilizarí­a, por ejemplo, el php que lleva OSX por defecto)

La segunda lí­nea he tenido que añadirla, ya que al ejecutar pear o symfony más tarde, no encontraba la ruta de las librerí­as.

Ahora ya podemos ejecutar el pear y el php recién instalados mediante MAMP. Para instalar symfony necesitamos identificarnos como root, utilizando sudo, y ejecutando peardev (con pear no funciona por un error en los lí­mites de memoria de php. Esto se puede solucionar editando el archivo php.ini y cambiando memory_limit a 16M, por ejemplo, como indica noelmf en los comentarios). En la web que he enlazado anteriormente indicaba ejecutar lo siguiente:


# sudo peardev channel-discover pear.symfony-project.com
# sudo peardev install symfony/symfony

Aquí­ he tenido otro problema: aunque habí­a añadido la ruta de las librerí­as en el profile, si ejecutaba el comando con sudo, el path funcionaba pero la ruta de la librerí­a no :S (si hay algíºn entendido de Mac, por favor, que deje sus comentarios al final…). Para solucionar este tema, lo que he hecho ha sido crear un archivo instalarsymfony.sh con el siguiente contenido:


#/bin/bash
peardev channel-discover pear.symfony-project.com
peardev install symfony/symfony

y después ejecutar este script como root, tras darle permisos de ejecución:


# chmod +x instalarsymfony.sh
# sudo instalarsymfony.sh

Actualizado 26/09/07: Como nos comenta Marino, podemos evitarnos este paso entrando como root mediante “sudo su -” y ejecutando allí­ los los comandos de peardev anteriores (la explicación, en el primer comentario)

Por fin, tenemos instalado Symfony. Podemos comprobarlo con el comando:


# symfony -V

Este comando nos muestra la versión instalada de Symfony, en mi caso, la 1.0.7.

Para comprobar que todo funciona correctamente, vamos a crear un proyecto y a configurar Apache con un host virtual. Lo primero es crear un directorio nuevo en nuestro home, el proyecto symfony (symfony_project, por ejemplo) y la aplicación inicial para ese proyecto (symfony_app, para seguir la nomenclatura anterior):


# mkdir symfony_project
# cd symfony_project
# symfony init-project symfony_project
# symfony init-app symfony_app

Ahora debemos configurar un host virtual en Apache, modificando el archivo /Applications/MAMP/conf/apache/httpd.conf


# nano -w /Applications/MAMP/conf/apache/httpd.conf

y añadimos estas lí­neas al final del fichero:


<VirtualHost *:80>
ServerName example.symfony_project.com
DocumentRoot "/users/ramses/symfony_project/web"
DirectoryIndex index.php
Alias /sf /Applications/MAMP/bin/php5/lib/php/data/symfony/web/sf
<Directory "/Applications/MAMP/bin/php5/lib/php/data/symfony/web/sf">
AllowOverride All
Allow from All
</Directory>
<Directory "/users/ramses/symfony_project/web">
AllowOverride All
Allow from All
</Directory>
</VirtualHost>

Tras esto, en MAMP he modificado el puerto de Apache, poniendo el 80 (preferencias->usar los puertos por defecto de Apache y MySQL) y reiniciamos los servicios (detener servidores-iniciar servidores). Actualizado 26/09/07: Como bien nos recuerda Mariano en los comentarios, para poder ejecutar el Apache de MAMP en el puerto 80, es necesario no tener corriendo el Apache original de Mac OSX (preferencias->compartir->compartir web)

Ahora sólo tenemos que abrir una ventana de nuestro navegador favorito e ir a la dirección que hayamos creado. En mi caso http://localhost/symfony_app_dev.php/

symfony.jpg

Enlaces interesantes:
Web oficial de Symfony
Comunidad española sobre Symfony
Documento de referencia sobre cómo instalar Symfony sobre MAMP