Jobeet, Dia 1: Comenzando el proyecto

Symfony

Su equivalente para la 1.4 la podemos encontrar aquí, La introducción que hacen ahí la obviaré pues no me corresponde a mí escribirla o copiarla por mi ignorancia respecto al tema

Para saber una introducción más interesante sobre Symfony2 nos podemos ir a la página de Symfony, y mirar en su documentación, recordad también que Nacho Pacheco realizó una traducción de la documentación a nuestro idioma. la pega es que Symfony2 va creciendo y evolucionando y no sé si traducirá lo nuevo de la versión 2.1, De todas formas la introducción  sería:

Guía de inicio rápido

Symfony2 y fundamentos HTTP

Symfony2 frente a PHP simple

Dudo que cambie mucho para las sucesivas versiones de Symfony2

Volviendo al capítulo en cuestión…

¿Qué hacemos hoy?

El primer día solo nos encargaremos de configurar nuestro entorno de desarrollo

Prerrequisitos

Tener instalado un entorno de desarrollo en nuestro ordenador un servidor web con su motor de base de datos y PHP (5.3.8 o superior recomendado), si no es así: Instalar Apache, MySQL y PHP5 en Ubuntu

Las instrucciones las realizaré para Linux desde linea de comandos, desde Windows funcionará muy parecido pero usaremos la ventana de comandas (cmd)

Los comandos de Unix pueden serte útiles dentro de un entorno Windows. Si quisieras utilizar herramientas como tar, gzip, or grep en Windows puedes instalar Cygwin. La documentación oficial puede ser un poco escasa pero una guía interesante puede encontrarse aquí. Los aventureros también pueden probar con los Servicios Windows para Unix. de Microsoft.

Instalación de Symfony

Ya que recomiendan el uso de Composer para este menester, así lo haremos:

Primero debemos tener Composer instalado para poder ejecutarlo (si lo tenemos en el directorio /usr/local/bin nos valdrá con poner composer, si no tendríamos que poner php composer.phar en el directorio donde esté composer)

composer create-project symfony/framework-standard-edition path/ 2.1.2

siendo path/ el directorio donde se instalará (el directorio donde va el proyecto no hace falta crearlo pues se crea solo, pero si hace falta crear el resto del path), en mi caso:

mkdir ~/Proyectos
mkdir ~/Proyectos/Symfony/
composer create-project symfony/framework-standard-edition ~/Proyectos/Symfony/jobeet.dev/ 2.1.2

Si os da un error sobre git es porque hay que tenerlo instalado

Configuración del servidor web

El siguiente paso será configurar Apache para poder acceder a nuestro proyecto para ello crearemos un nuevo archivo

sudo gedit /etc/apache2/sites-available/jobeet.dev
En OS X usando MAMP tenemos el archivo:
/Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
donde vamos añadiendo los host que usaremos

Ya que el vi no me acuerdo muy bien usaré el gedit :) y añadirmos

y creamos un enlace simbólico para habilitarlo

sudo ln -s /etc/apache2/sites-available/jobeet.dev /etc/apache2/sites-enabled/jobeet.dev

reseteamos el servidor

sudo /etc/init.d/apache2 restart

modificar el archivo /etc/hosts para que la dirección que queremos usar apunte a nuestro localhost

127.0.0.1 www.jobeet.dev jobeet.dev

Y ya podemos acceder a nuestro proyecto desde la dirección www.jobeet.dev

Lo que debemos  comprobar es que cumplimos todas los requisitos desde www.jobeet.dev/config.php

Symfony2 checkLos dos primeros errores es por algo que hay que hacer siempre que se empiece con un proyecto de Symfony2 y es dar permisos a los directorios app/cache y app/log

En la carpeta del proyecto previamente borramos el contenido de los directorios:

rm -rf app/cache/*
rm -rf app/logs/*

después:

sudo chmod +a “www-data 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

Si esto no funciona porque nos da un error de que  +a es un modo inválido para chmod probamos con

sudo setfacl -R -m u:www-data:rwx -m u:`whoami`:rwx app/cache app/logs
sudo setfacl -dR -m u:www-data:rwx -m u:`whoami`:rwx app/cache app/logs

Como bien pone en la documentación usamos el usuario www-data porque estamos trabajando sobre apache2 en caso de tener otro servidor usar el indicado

A mi con esta ultima opción me funcionó pero en la documentación como último recurso dice de añadir al comienzo de app/console, web/app.php y web/app_dev (y si tuviéramos más entornos lo mismo)

umask(0002);

o

umask(0000);

El resto de los problemas que nos aparecía en el config.php sólo aparecerán la primera vez, para el resto de proyectos no.

De los problemas que nos quedan los realmente obligatorios son los MAJOR PROBLEMS pero ya que estamos arreglaremos todos:

Install and enable a PHP accelerator like APC (highly recommended).

sudo apt-get install libpcre3-dev
sudo pecl install APC

(Cuando me preguntaba dejaba todas las respuestas por defecto)

y añadimos al final del fichero php.ini

sudo gedit /etc/php5/apache2/php.ini

la linea

extension=apc.so

Ya que estamos con el php.ini arreglamos los demás problemas

Set the “date.timezone” setting in php.ini* (like Europe/Paris).

Set short_open_tag to off in php.ini*.

Añadimos a date.timezone el valor de Europe/Pais en mi caso y descomentamos la linea (quitando el ; del comienzo) y cambiamos short_open_tag a off.

Ahora reseteamos apache

sudo /etc/init.d/apache2 restart

Y wuala ya tenemos todo funcionando

Symfony2 check correcto

Para terminar crearemos un bundle que será el que usaremos para nuestro proyecto. Como pone en la documentación un bundle es un paquete donde esta todos los archivos para un grupo de funcionalidades especificas.

Nos vamos por consola al directorio de nuestro proyecto

php app/console generate:bundle

Para ver todas las opciones disponibles ponemos
php app/console

Nos harán una serie de preguntas:

Bundle namespace: MDUA/JobeetBundle
Bundle name [MDUAJobeetBundle]:
Target directory [/home/usuario/Proyectos/Symfony/jobeet.dev/src]:
Configuration format (yml, xml, php, or annotation) [annotation]: yml
Do you want to generate the whole directory structure [no]? yes
Do you confirm generation [yes]?
Confirm automatic update of your Kernel [yes]?
Confirm automatic update of the Routing [yes]?

Antes de terminar el día de hoy comentar que para acceder a nuestra web en el entorno de desarrollo vamos a

http://www.jobeet.dev/app_dev.php

Pantalla de configuración Symfony2
Los entornos no son más que unas series de opciones de configuración, por ejemplo el entorno de desarrollo nos muestra la barra de debug así como los errores y excepciones en la aplicación, etc, en cambio en producción la barra de debug no aparece y se mejora rendimiento, se activa la caché…
Para más información sobre entornos podemos mirar la documentación o la traducción.

La pantalla que nos aparece mientras no empecemos a configurar nuestro proyecto será esta, posteriormente seguiremos configurándolo

Y ya para terminar para evitar tener que añadir el fichero app_dev.php cada dos por tres lo que podemos hacer es modificar el fichero web/.htaccess para añadir un rewrite (que solo funcionará si tenemos el módulo rewrite habilitado en nuestro servidor)

sustituyendo app.php por app_dev.php

Evidentamente en un entorno de producción esto no deberíamos tocarlo… pero como solo sera para desarrollar en local se puede hacer una pequeña chapucilla :D

Para comprobar que todo funciona bien vamos a www.jobeet.dev y si nos aparece la pantalla anterior en vez de una pantalla de error todo está correcto.

Bueno y para el día 1 hemos terminado… Espero ser capaz de seguir haciendo los demás días jeje

Proyecto original: http://www.symfony-project.org/jobeet/1_4/Doctrine/es/01

Deja un comentario

  • (will not be published)


+ 8 = 11