Front & Back

Blog sobre el Desarrollo de aplicaciones web

Back end Cómo instalar Symfony2 y controlar las versiones de tu proyecto con Git

Symfony es un framework de desarrollo en PHP basado en el patrón MVC (Modelo Vista Controlador). Symfony provee al desarrollador de herramientas comúnmente utilizadas en la mayoría de proyectos web, para agilizar el proceso de desarrollo.

Por su parte Git, es un sistema de control de versiones que cada vez cuenta con un mayor número de usuarios. Una de sus principales ventajas frente a otros sistemas, como por ejemplo SVN, es una gestión distribuída del proyecto (cada usuario cuenta con su propia copia del repositorio, pudiendo incluso trabajar offline).

Instalación de Symfony2

En este pequeño tutorial instalaremos Symfony en su versión 2.2. Los pasos siguientes se han probado en un sistema Mac OS X, aunque deberían ser los mismos para cualquier sistema Linux.

Tal como se describe en la documentación oficial, la manera más cómoda de instalar Symfony es hacerlo mediante Composer, el gestor de paquetes que usa en la actualidad. Para ello ejecutaremos desde consola los comandos siguientes:

$ curl -s https://getcomposer.org/installer | php #Descargamos Composer
$ php composer.phar create-project symfony/framework-standard-edition /path/to/webroot/Symfony 2.2.0 #Descargamos Symfony2 en el directorio especificado

Pero, ¿por qué utilizar Composer?

Composer permite gestionar las dependencias de un proyecto de forma sencilla a través de un archivo (composer.json). De esta manera podemos especificar qué bundles o librerías necesitamos y cuáles no. Así, nuestro repositorio sólo contendrá el código que pertenece únicamente al proyecto en cuestión. Todas las dependencias se descargarán e instalarán durante el proceso de instalación del programa.

Comprobando los requerimientos

Una vez hemos instalado Symfony, necesitamos saber si nuestro sistema cuenta con todos los requisitos necesarios para el funcionamiento del framework, para ello contamos con el archivo app/check.php que podemos ejecutar para que nos facilite esa información:
$ php app/check.php #Si lo ejecutamos desde el directorio raíz del proyecto

Últimos ajustes

Ahora tendremos que cambiar los permisos para los directorios app/logs y app/cache:
$ sudo chmod +a "_www allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs
$ sudo chmod +a "`whoami` allow delete,write,append,file_inherit,directory_inherit" app/cache app/logs

Configurando Git

Aunque se puede trabajar con Git sin necesidad de tener un repositorio remoto, si trabajamos en un proyecto con más de un desarrollador, es imprescindible que exista un repositorio común. Dos buenas opciones son GitHub o Bitbucket, a las que te recomiendo que eches un vistazo si aún no las conoces. Lo primero que tenemos que hacer es crear el archivo .gitignore en el directorio raíz del proyecto; éste contendrá una lista con los directorios que no incluiremos en nuestro repositorio. En el caso de Symfony, suele pintar de esta manera:
web/bundles
web/css
web/js
app/bootstrap.php.cache
app/cache/*
app/logs/*
app/config/parameters.yml
build/
vendor
composer.phar

Como vemos, no incluimos en el repositorio los directorios que se generan durante la instalación (con assets:install): css, js y bundles; como tampoco queremos que aparezcan los logs que generamos durante el desarrollo, ni nuestra caché. Por supuesto, los vendors (Symfony, Doctrine y en definitiva todos los programas de terceros necesarios para el funcionamiento de nuestro proyecto) tampoco tienen por qué estar en nuestro repositorio; Composer se encargará de descargarlos.

En el .gitignore, también he incluido el archivo parameters.yml; Éste contiene todos los parámetros de configuración de nuestra base de datos entre otras cosas, así que no debemos distribuirlo. No obstante es necesario en nuestro proyecto, así que podemos crear un archivo parameters_dist.yml con los parámetros en blanco, que sí distribuiremos, y que renombraremos una vez desplegado el proyecto.

Asumiendo que ya has instalado Git (con apt o Homebrew, por ejemplo), el siguiente paso es inicializar el repositorio y subirlo al servidor; yo en este caso he escogido Bitbucket. Desde el directorio raíz de proyecto, seguimos los pasos siguientes:
$ git init #Inicializamos el repositorio
$ git add . #Agregamos todos los archivos al control de versiones
$ git commit -m "__ourMessage__" #Subimos los cambios a nuestro repositorio local
$ git remote add origin ssh://git@bitbucket.org/__repositoryPath__.git #Agregamos el repositorio remoto
$ git push -u origin --all #Subimos el repositorio

Ya tenemos nuestro proyecto subido al servidor; cada vez que queramos crear un "punto de control", registraremos todos nuestros cambios mediante el comando 'git commit -am "__ourMessage__"' y lo subiremos al servidor con 'git push'.

Esto es sólo una pequeña aproximación a Git. Si te resulta interesante, te recomiendo el libro Pro Git que puedes leer online.