SlideShare una empresa de Scribd logo
1 de 75
Symfony
              Parte 3

 Rodrigo Miranda
    rmiranda@poodu.cl
contacto@rodrigomiranda.cl
http://www.rodrigomiranda.cl
Desarrollando
Proyecto




           Rodrigo Miranda
       Blog: www.rodrigomiranda.cl
Desarrollando Proyecto




  Requisitos:


•  Instalada plataforma LAMP (Linux, Apache, MySQL y PHP)

•  Configurar Repositorio Subversión.

•  Instalar Symfony.




                             Rodrigo Miranda
                         Blog: www.rodrigomiranda.cl
Desarrollando Proyecto




  •  Instalar APACHE 2.

          •  fedora, CentOS, RedHat:
           #   yum install httpd



          •  Ubuntu


           # sudo aptitude install apache2

                               Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
Desarrollando Proyecto




   •  Instalar MySQL.

           •  fedora, CentOS, RedHat:


          # yum install mysql-server mysql



           •  Ubuntu


          # sudo aptitude install mysql-server mysql-client
                             Rodrigo Miranda
                         Blog: www.rodrigomiranda.cl
Desarrollando Proyecto




      •  Instalar PHP.

             •  fedora, CentOS, RedHat:

           # yum install php php-cli php-gd php-mbstring php-mcrypt php-
           mysql php-pdo php-xml php-xmlrpc




             •  Ubuntu

           # sudo aptitude install php5 php5-cli php5-gd php5-mcrypt php5-
           mysql php5-xsl php5-xmlrpc

                               Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
Desarrollando Proyecto




  •  Descargar última versión phpMyAdmin

          •  fedora, CentOS, RedHat:


           # Descargar del sitio web la última versión ;-)



          •  Ubuntu

           # sudo aptitude install phpmyadmin

                             Rodrigo Miranda
                         Blog: www.rodrigomiranda.cl
Desarrollando Proyecto


•  Para el caso de Ubuntu, después de instalar, se
debe realizar un enlace simbólico.



 # sudo ln –s /usr/share/phpmyadmin                    /var/www/




                             Rodrigo Miranda
                         Blog: www.rodrigomiranda.cl
Desarrollando Proyecto


 Si no tienes instalado Subversion, es hora de
 hacerlo.

         •  fedora, CentOS, RedHat:


           # yum install subversion


         •  Ubuntu


           # sudo aptitude install subversion

                             Rodrigo Miranda
                         Blog: www.rodrigomiranda.cl
Desarrollando Proyecto



    •  Recomendamos crear un directorio que pueda
       contener más de una versión de Symfony. Este
       no debe ser accesible desde Internet.

        # mkdir –p /versiones-symfony/symfonyx_x_x/
        # cd /versiones-symfony/symfonyx_x_x

        # svn co http://svn.symfony-project.com/tags/RELEASE_x_x_x/ .


    •  Una alternativa de descarga para el curso es la
       siguiente dirección:
    •  http://www.poodu.cl/symfony1_2_9.zip
                              Rodrigo Miranda
                          Blog: www.rodrigomiranda.cl
Desarrollando Proyecto

    •  Ingresar al directorio bin de la instalación
       Symfony:
     # cd /versiones-symfony/symfonyx_x_x/data/bin



     •  Ejecutar script check_configuration. El nos
        detallará si nuestro sistema cumple con los
        requerimientos para la instalación de Symfony.
      #   php check_configuration.php



                             Rodrigo Miranda
                         Blog: www.rodrigomiranda.cl
Desarrollando Proyecto



    •  El comando symfony -V, para el caso de la
       instalación por Subversión, lo podremos ejecutar
       de la siguiente manera:

        # php /versiones-symfony/symfonyx_x_x/data/bin/symfony –V

       o
        # /versiones-symfony/symfonyx_x_x/data/bin/./symfony –V

       resultado:
        # symfony version x.x.x (/versiones-symfony/symfonyx_x_x/lib)


                              Rodrigo Miranda
                          Blog: www.rodrigomiranda.cl
Desarrollando Proyecto



       Obtener Comandos de Symfony:

      # php /versiones-symfony/symfonyx_x_x/data/bin/symfony




      O:


      # /versiones-symfony/symfonyx_x_x/data/bin/./symfony




                             Rodrigo Miranda
                         Blog: www.rodrigomiranda.cl
Desarrollando Proyecto
       Comandos de Symfony:




                             Rodrigo Miranda
                         Blog: www.rodrigomiranda.cl
Proyecto
a
Desarrollar




           Rodrigo Miranda
       Blog: www.rodrigomiranda.cl
Desarrollando Proyecto


  Gestionador de Encuestas Open Source:


•  Considere dos aplicaciones en el proyecto, una aplicación
   administrador y otra pública.

•  La aplicación pública mostrará cada encuesta de acuerdo a
   una URL amigable (distinta).

•  El administrador permitirá que un usuario con privilegios
   gestione distintos tipos de encuestas.



                             Rodrigo Miranda
                         Blog: www.rodrigomiranda.cl
Desarrollando Proyecto




•  La aplicación permitirá crear una gran cantidad de tipo de
   encuestas.

•  Permitir importar al Sistema una base de Usuario a través de
   un archivo csv o excel.

•  Permitir la exportación de resultados.

•  Permitir el trabajo con otras base de usuarios en el proceso de
   login al sistema.


                             Rodrigo Miranda
                         Blog: www.rodrigomiranda.cl
Desarrollando Proyecto




   •  Obtención de gráficos y estadísticas de acuerdo a
      respuestas obtenidas por encuesta.

   •  Soporte para varios idiomas.

   •  Canales RSS y API que permite la interacción con otros
      servicios.




                             Rodrigo Miranda
                         Blog: www.rodrigomiranda.cl
Desarrollando Proyecto

   •  La alternativa Open Source más conocida:




                             Rodrigo Miranda
                         Blog: www.rodrigomiranda.cl
Comenzamos
el
Desarrollo




            Rodrigo Miranda
        Blog: www.rodrigomiranda.cl
Creamos
el
Proyecto




         Rodrigo Miranda
     Blog: www.rodrigomiranda.cl
Creamos el Proyecto


   Crear el proyecto Encuesta:

  # mkdir /tu/directorio/web/encuesta
  # cd /tu/directorio/web/encuesta

       Dependiendo del sistema operativo y de la instalación
       realizada, puede ser necesario utilizar el prefijo php antes
       de cada comando Symfony.
# php /versiones-symfony/symfonyx_x_x/data/bin/symfony generate:project encuesta


  O:
# /versiones-symfony/symfonyx_x_x/data/bin/./symfony generate:project encuesta



                                   Rodrigo Miranda
                               Blog: www.rodrigomiranda.cl
Creamos el proyecto

•  Estructura de Directorio Creada con el comando
   generate:project:




                           Rodrigo Miranda
                       Blog: www.rodrigomiranda.cl
Creamos el proyecto




   •  La gran cantidad de directorios creados con el
      comando generate:project permiten estándarizar los
      desarrollos, proponiendo una distribución de la lógica
      de la programación que permita una eficiente
      mantención. Además, otro programador de Symfony
      puede entender rápidamente el proyecto a través de
      esta estructura y así formar un buen equipo de trabajo.




                          Rodrigo Miranda
                      Blog: www.rodrigomiranda.cl
Creamos el proyecto




   •  La tarea generate:project crea un atajo de
      Symfony dentro del directorio raíz del proyecto
      encuesta. Por lo mismo, de ahora en adelante,
      cada vez que utilicemos el comando ./symfony, lo
      estaremos ejecutando en la raíz del proyecto y NO
      desde la ruta o path del directorio donde
      descargamos symfony para su instalación.




                          Rodrigo Miranda
                      Blog: www.rodrigomiranda.cl
Crear
las
Aplicaciones




           Rodrigo Miranda
       Blog: www.rodrigomiranda.cl
Creamos las Aplicaciones



      Creamos la aplicación pública con el comando
     generate:app :



        # ./symfony generate:app - -escaping-strategy=on - -
        csrf-secret=UniqueSecret publico




                               Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
Creamos las Aplicaciones



      Creamos la aplicación administrador con el
     comando generate:app :



        # ./symfony generate:app - -escaping-strategy=on - -
        csrf-secret=UniqueSecret administrador




                               Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
Creamos las Aplicaciones


  Seguridad contemplada en Symfony.

•  Protección contra ataques XSS (Cross-site scripting)


          - -escaping-strategy

•  Evitar vulnerabilidades que permitan ejecutar código como VBScript o
JavaScript en el contexto de otro sitio web.
•  Evitar la modificación de variables entre dos páginas (ejemplo cookies o
envío por URL)
•  Evitar la inclusión de etiquetas aceptadas en HTML que ejecuten código
malicioso.

                                Rodrigo Miranda
                            Blog: www.rodrigomiranda.cl
Creamos las Aplicaciones


  Seguridad contemplada en Symfony.

•  Protección contra ataques CSRF


           - -csrf-secret

•  Evitar la falsificación de petición en sitios cruzados.

•  Evitar Comandos no autorizados transmitidos por un usuario en el cual el
sitio web confía.



                                  Rodrigo Miranda
                              Blog: www.rodrigomiranda.cl
Creamos las Aplicaciones


  Resumen seguridad contemplada en Symfony.

•  --escaping-strategy: Permite escapar la salida para
evitar ataques XSS.

•  --csrf-secret: Permite tokens de sesión en los
formularios para prevenir los ataques CSRF.

Pasando estas dos opciones a la tarea, hemos asegurado
nuestro futuro desarrollo de las dos vulnerabilidades más
extendidas en la web.

                               Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
Creamos las Aplicaciones




      a estructura de Directorios de cada aplicación
     L
     generada con el comando generate:app es
     similar a:




                               Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
Creamos las Aplicaciones




                               Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
Entornos




    Rodrigo Miranda
Blog: www.rodrigomiranda.cl
Entornos


     Entornos: Si revisamos el directorio web/ de nuestro
   proyecto encontrarás una estructura similar a esta:




                         Rodrigo Miranda
                     Blog: www.rodrigomiranda.cl
Entornos


      Entornos: Los archivos index.php,
    publico_dev.php son llamados controladores
    frontales de la aplicación publico.

    •  La primera aplicación creada en un proyecto tiene el
    privilegio de utilizar el archivo index.php como uno de
    sus controladores.

    •  Es por eso que los nombres de los controladores
    frontales de la aplicación administrador (que fue
    creada en segundo lugar) son: administrador.php y
    administrador_dev.php
                          Rodrigo Miranda
                      Blog: www.rodrigomiranda.cl
Entornos


        Entornos


           • Entorno de desarrollo (dev)
           • Entorno de pruebas
           • Entorno intermedio
           • Entorno de producción (prod)




                        Rodrigo Miranda
                    Blog: www.rodrigomiranda.cl
Entornos



       Entorno de desarrollo (dev)

     •  Este es el ambiente utilizado por desarrolladores
     web para añadir nuevas funciones, corregir errores y
     realizar seguimientos a cada uno de los componentes
     que forman parte de la aplicación.




                          Rodrigo Miranda
                      Blog: www.rodrigomiranda.cl
Entorno



    Diferencias de entornos

   •  Cada entorno no es más que un conjunto
   específico de configuraciones, ejemplo, el entorno de
   desarrollo (dev) considera un log para guardar
   información y la característica de caché está
   deshabilitada para que los cambios realizados por el
   desarrollador se tengan en cuenta de forma
   instantánea.




                         Rodrigo Miranda
                     Blog: www.rodrigomiranda.cl
Entorno


      Diferencias de entornos



    •  Por el contrario, en el entorno de producción se
    considera habilitado el caché, pero la barra depuración
    deshabilitada, ya que éste entorno es el que visualizará
    el usuario público de nuestra aplicación.




                          Rodrigo Miranda
                      Blog: www.rodrigomiranda.cl
Entorno




  •  Definir un nuevo entorno en Symfony es tan sencillo
  como crear un nuevo controlador frontal. Más adelante
  en nuestro proyecto profundizaremos al respecto.




                         Rodrigo Miranda
                     Blog: www.rodrigomiranda.cl
Entorno




  •  Definir un nuevo entorno en Symfony es tan sencillo
  como crear un nuevo controlador frontal. Más adelante
  en nuestro proyecto profundizaremos al respecto.




                        Rodrigo Miranda
                    Blog: www.rodrigomiranda.cl
Controlador


      Archivo web/index.php

    <?php




                        Rodrigo Miranda
                    Blog: www.rodrigomiranda.cl
Controlador


      Opciones del método getApplicationConfiguration.

              •  La primera opción indica la aplicación
                 (publico).

              •  La segunda opción indica el entorno (dev).

              •  La tercera opción el modo debug, si éste está
                 o no habilitado (false).



                             Rodrigo Miranda
                         Blog: www.rodrigomiranda.cl
Servidor
Web




      Rodrigo Miranda
  Blog: www.rodrigomiranda.cl
Configuración del Servidor Web
      <VirtualHost *:80>
       ServerName encuesta.localhost
       DocumentRoot /tu/directorio/web/encuesta/web
       DirectoryIndex index.php

       Alias /sf /versiones-symfony/symfonyx_x_x/data/web/sf
       Errorlog /var/log/httpd/encuestaError.log
       CustomLog /var/log/httpd/accessEncuesta.log common
       <Directory /versiones-symfony/symfonyx_x_x/data/web/sf>
         AllowOverride All
         Allow from All
       </Directory>

        <Directory /tu/directorio/web/encuesta/web>
          Allowoverride All
          Allow from All
        </Directory>
      </VirtualHost>
                                  Rodrigo Miranda
                              Blog: www.rodrigomiranda.cl
Configuración del Servidor Web


  En caso de que aún no esté definido, agregar la directiva
ServerName al archivo de configuración de Apache2:

                •  fedora, CentOS, RedHat

        # sudo vim /etc/httpd/conf/httpd.conf


                •  Ubuntu

        # sudo vim /etc/apache2/./apache2.conf



                                 Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
Configuración del Servidor Web


    Directiva ServerName en archivo configuración
     Apache:




   ServerName servidorweb




                                 Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
Configuración del Servidor Web


    Configuración archivo hosts:

                 /etc/hosts

             c:windowssystem32driversetchosts



   127.0.0.1       servidorweb                encuesta.localhost




                                 Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
Configuración del Servidor Web


     Reiniciamos Apache:

                   •  fedora, CentOS, RedHat

         # sudo /etc/init.d/./httpd restart




                   •  Ubuntu

         # sudo     /etc/init.d/apache2 restart


                                 Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
Configuración del Servidor Web


    Accedemos a la aplicación pública (prod) desde un
     navegador:




           http://encuesta.localhost




                                 Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
Configuración del Servidor Web


    Un error Común:




                                 Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
Configuración del Servidor Web




      •  El anterior en esencia NO es un error, sino que
         Apache no puede encontrar las imágenes, hojas
         de estilos y archivos Javascript utilizados para la
         barra de depuración. Por lo tanto, se debe
         comprobar que existe la siguiente línea en la
         configuración del VirtualHost:

         Alias /sf /versiones-symfony/symfonyx_x_x/data/web/sf




                                 Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
Proyecto, Aplicaciones y Módulos




      •  Una alternativa para generar el alias podría ser crear
         un enlace simbólico o copiar directamente los
         contenidos del directorio:

         /versiones-symfony/symfonyx_x_x/data/web/sf/

         al directorio:


        /directorio/web/blog/web/sf/




                               Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
Configuración del Servidor Web


    Si todo está correcto, deberíamos ver lo siguiente:




                                 Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
Configuración del Servidor Web


    Accedemos a la aplicación pública (dev) desde un
     navegador:




       http://encuesta.localhost/publico_dev.php




                                 Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
Configuración del Servidor Web

    Si todo está correcto, deberíamos ver lo siguiente:




                                 Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
Configuración del Servidor Web




      •  La principal diferencia es que el controlador
         frontal del entorno de desarrollo nos muestra una
         barra de depuración en la parte superior derecha.

      •  La barra de depuración web se mostrará en todas
         las páginas del entorno de desarrollo. En ella
         podemos encontrar (configuración de la
         aplicación, los mensajes de log de la petición
         actual, las sentencias SQL ejecutadas en la base
         de datos, información sobre la memoria
         consumida y el tiempo total de ejecución).


                                 Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
Levantamiento
Servidor

      Subversion




           Rodrigo Miranda
       Blog: www.rodrigomiranda.cl
Levantamiento Servidor Subversion


      Para qué necesitamos Subversion.
    •  Trabajar con más confianza.

    •  Volver a una versión anterior en caso de que un
    cambio rompa la aplicación.

    •  Permitir a dos o más personas trabajar
    simultáneamente sobre un mismo proyecto.

    •  Disponer de acceso directo a todas las versiones de
    la aplicación.
                               Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
Levantamiento Servidor Subversion




    •  Al comienzo de esta presentación instalamos
    subversion para ejecutar el comando svn co que nos
    permitió descargar la última versión estable de Symfony.

    •  Por lo tanto comenzaremos a utilizar Subversion.




                               Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
Levantamiento Servidor Subversion


    Crear repositorio para nuestro proyecto.

       •  fedora, CentOS, RedHat y Ubuntu

 # sudo mkdir /repositorios




 # sudo svnadmin create - -fs-type fsfs /repositorios/encuesta




                               Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
Levantamiento Servidor Subversion


    Crear la estructura básica en el repositorio.

       •  fedora, CentOS, RedHat y Ubuntu


 # sudo svn mkdir –m “creación de estructura inicial” file:///
 repositorios/encuesta/trunk file:///repositorios/encuesta/tags
 file:///repositorios/encuesta/branches




                               Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
Levantamiento Servidor Subversion


    Realizamos un checkout de nuestro directorio trunk.


 # cd /tu/directorio/web/encuesta




  # sudo svn co file:///repositorios/encuesta/trunk/ .




                               Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
Levantamiento Servidor Subversion


    Borramos los contenidos de los directorios cache/ y
  log/ dentro de nuestro proyecto, ya que no son de interés
  para nuestro repositorio Subversión.



  # sudo rm -rf cache/*             log/*




                               Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
Levantamiento Servidor Subversion


    Le damos permiso adecuados a los directorios
  cache/ y log/ dentro de nuestro proyecto, para que el
  servidor web pueda escribir en ellos.



 # sudo chmod 777 cache log




                               Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
Levantamiento Servidor Subversion


    Dado que es la primera vez que subimos los archivos
  al servidor Subversion (repositorio encuesta) vamos
  importar, para ello antes debemos indicarle a nuestro
  cliente subversión (quién controla todo dentro de
  nuestro proyecto) todos los archivos que vamos a
  considerar.

 # svn add *




                               Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
Levantamiento Servidor Subversion




                               Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
Levantamiento Servidor Subversion




   Como no vamos a importar los archivos de los
  directorios cache/ y log/, debemos añadirlos a la lista
  de archivos ignorados.

 # svn propedit svn:ignore cache




                               Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
Levantamiento Servidor Subversion




     •  En estos momentos tenemos abierto el editor de
     archivo configurado por defecto en nuestro equipo.
     Como queremos ignorar todos los contenidos de este
     directorio, realizamos lo sgte:


 *



     •  Guardamos y Cerramos el archivo

                               Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
Levantamiento Servidor Subversion




   Repetimos el proceso para el directorio log/.



 # svn propedit svn:ignore log




                               Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
Levantamiento Servidor Subversion




  •  Y agregamos el * , para posteriormente guardar y
  cerrar el archivo.


   *




                               Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
Levantamiento Servidor Subversion




  •  Para finalizar realizamos la importación al servidor
  Subversion.



  # svn import -m “Primera importación”                  . file:///
 repositorios/encuesta/trunk




                               Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
Desarrollando una Aplicación




                               Rodrigo Miranda
                           Blog: www.rodrigomiranda.cl
Preguntas?




    Rodrigo Miranda
Blog: www.rodrigomiranda.cl

Más contenido relacionado

Similar a Symfony Parte 3

Clase 3 instalación y primeros pasos
Clase 3 instalación y primeros pasosClase 3 instalación y primeros pasos
Clase 3 instalación y primeros pasoshydras_cs
 
Creación de entornos de desarrollo con Vagrant
Creación de entornos de desarrollo con VagrantCreación de entornos de desarrollo con Vagrant
Creación de entornos de desarrollo con VagrantCarlos Gimeno Yáñez
 
Symfony-Community: Introducción a Symfony Framework
Symfony-Community: Introducción a Symfony FrameworkSymfony-Community: Introducción a Symfony Framework
Symfony-Community: Introducción a Symfony Frameworkexcedesoft
 
Symfony2 Formacion y primeros pasos
Symfony2  Formacion y primeros pasosSymfony2  Formacion y primeros pasos
Symfony2 Formacion y primeros pasosSoni BM
 
Android reversing 101.pdf
Android reversing 101.pdfAndroid reversing 101.pdf
Android reversing 101.pdfJosé Moreno
 
Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1Yaismel Miranda
 
La Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceARLa Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceARPablo Godel
 
Herramientas para desarrollar rápidamente
Herramientas para desarrollar rápidamenteHerramientas para desarrollar rápidamente
Herramientas para desarrollar rápidamenteCarlos Toxtli
 
Desarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyDesarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyJorge Antonio Linares Vera
 
Desplegando Proyectos Symfony2 con Capistrano-Capifony y Git
Desplegando Proyectos Symfony2 con Capistrano-Capifony y GitDesplegando Proyectos Symfony2 con Capistrano-Capifony y Git
Desplegando Proyectos Symfony2 con Capistrano-Capifony y Gitmoisesgallego
 
Desarrollo de apps móviles con Apache Cordova
Desarrollo de apps móviles con Apache CordovaDesarrollo de apps móviles con Apache Cordova
Desarrollo de apps móviles con Apache CordovaSoftware Guru
 

Similar a Symfony Parte 3 (20)

Clase 3 instalación y primeros pasos
Clase 3 instalación y primeros pasosClase 3 instalación y primeros pasos
Clase 3 instalación y primeros pasos
 
Pylons
PylonsPylons
Pylons
 
Creación de entornos de desarrollo con Vagrant
Creación de entornos de desarrollo con VagrantCreación de entornos de desarrollo con Vagrant
Creación de entornos de desarrollo con Vagrant
 
CRUD básico con Symfony
CRUD básico con SymfonyCRUD básico con Symfony
CRUD básico con Symfony
 
Symfony-Community: Introducción a Symfony Framework
Symfony-Community: Introducción a Symfony FrameworkSymfony-Community: Introducción a Symfony Framework
Symfony-Community: Introducción a Symfony Framework
 
Symfony2 Formacion y primeros pasos
Symfony2  Formacion y primeros pasosSymfony2  Formacion y primeros pasos
Symfony2 Formacion y primeros pasos
 
Symfony dagrinchi
Symfony dagrinchiSymfony dagrinchi
Symfony dagrinchi
 
Introducción a Silex
Introducción a SilexIntroducción a Silex
Introducción a Silex
 
Android reversing 101.pdf
Android reversing 101.pdfAndroid reversing 101.pdf
Android reversing 101.pdf
 
Symfony
SymfonySymfony
Symfony
 
Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1
 
La Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceARLa Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
 
Herramientas para desarrollar rápidamente
Herramientas para desarrollar rápidamenteHerramientas para desarrollar rápidamente
Herramientas para desarrollar rápidamente
 
Desarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyDesarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademy
 
Desplegando Proyectos Symfony2 con Capistrano-Capifony y Git
Desplegando Proyectos Symfony2 con Capistrano-Capifony y GitDesplegando Proyectos Symfony2 con Capistrano-Capifony y Git
Desplegando Proyectos Symfony2 con Capistrano-Capifony y Git
 
CodeCamp 2010 | Diez formas de escribir código (in)seguro
CodeCamp 2010 | Diez formas de escribir código (in)seguroCodeCamp 2010 | Diez formas de escribir código (in)seguro
CodeCamp 2010 | Diez formas de escribir código (in)seguro
 
Desarrollo de apps móviles con Apache Cordova
Desarrollo de apps móviles con Apache CordovaDesarrollo de apps móviles con Apache Cordova
Desarrollo de apps móviles con Apache Cordova
 
Deploying Wordpress
Deploying WordpressDeploying Wordpress
Deploying Wordpress
 
Backbeam
BackbeamBackbeam
Backbeam
 
Frontal Avanzado y Assetic
Frontal Avanzado y AsseticFrontal Avanzado y Assetic
Frontal Avanzado y Assetic
 

Más de Rodrigo Miranda

Más de Rodrigo Miranda (20)

Symfony Pruebas Unitarias
Symfony Pruebas UnitariasSymfony Pruebas Unitarias
Symfony Pruebas Unitarias
 
Symfony Consultas Sql Criterion Hydrate
Symfony Consultas Sql Criterion  HydrateSymfony Consultas Sql Criterion  Hydrate
Symfony Consultas Sql Criterion Hydrate
 
Symfony Consultas Sql Criterion Hydrate
Symfony Consultas Sql Criterion  HydrateSymfony Consultas Sql Criterion  Hydrate
Symfony Consultas Sql Criterion Hydrate
 
Symfony Consultas Sql Criterion Hydrate
Symfony Consultas Sql Criterion  HydrateSymfony Consultas Sql Criterion  Hydrate
Symfony Consultas Sql Criterion Hydrate
 
Symfony parte 13
Symfony parte 13Symfony parte 13
Symfony parte 13
 
Symfony parte 18
Symfony parte 18Symfony parte 18
Symfony parte 18
 
Symfony parte 17
Symfony parte 17Symfony parte 17
Symfony parte 17
 
Symfony parte 16
Symfony parte 16Symfony parte 16
Symfony parte 16
 
Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y MigraciónSymfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
 
Symfony parte 14 Consultas SQL - Páginador
Symfony parte 14 Consultas SQL - PáginadorSymfony parte 14 Consultas SQL - Páginador
Symfony parte 14 Consultas SQL - Páginador
 
Symfony parte 12
Symfony parte 12Symfony parte 12
Symfony parte 12
 
Symfony parte 11 Formularios
Symfony parte 11 FormulariosSymfony parte 11 Formularios
Symfony parte 11 Formularios
 
Symfony parte 10
Symfony parte 10Symfony parte 10
Symfony parte 10
 
Symfony parte 9
Symfony parte 9Symfony parte 9
Symfony parte 9
 
Symfony parte 8
Symfony parte 8Symfony parte 8
Symfony parte 8
 
Symfony parte 7
Symfony parte 7Symfony parte 7
Symfony parte 7
 
Symfony parte 6
Symfony parte 6Symfony parte 6
Symfony parte 6
 
Symfony parte 6
Symfony parte 6Symfony parte 6
Symfony parte 6
 
Symfony Parte 5
Symfony Parte 5Symfony Parte 5
Symfony Parte 5
 
Adentrándonos a PHP 5
Adentrándonos a PHP 5Adentrándonos a PHP 5
Adentrándonos a PHP 5
 

Último

dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramDIDIERFERNANDOGUERRE
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 

Último (20)

dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ram
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 

Symfony Parte 3

  • 1. Symfony Parte 3 Rodrigo Miranda rmiranda@poodu.cl contacto@rodrigomiranda.cl http://www.rodrigomiranda.cl
  • 2. Desarrollando
Proyecto
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 3. Desarrollando Proyecto   Requisitos: •  Instalada plataforma LAMP (Linux, Apache, MySQL y PHP) •  Configurar Repositorio Subversión. •  Instalar Symfony. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 4. Desarrollando Proyecto •  Instalar APACHE 2. •  fedora, CentOS, RedHat: # yum install httpd •  Ubuntu # sudo aptitude install apache2 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 5. Desarrollando Proyecto •  Instalar MySQL. •  fedora, CentOS, RedHat: # yum install mysql-server mysql •  Ubuntu # sudo aptitude install mysql-server mysql-client Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 6. Desarrollando Proyecto •  Instalar PHP. •  fedora, CentOS, RedHat: # yum install php php-cli php-gd php-mbstring php-mcrypt php- mysql php-pdo php-xml php-xmlrpc •  Ubuntu # sudo aptitude install php5 php5-cli php5-gd php5-mcrypt php5- mysql php5-xsl php5-xmlrpc Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 7. Desarrollando Proyecto •  Descargar última versión phpMyAdmin •  fedora, CentOS, RedHat: # Descargar del sitio web la última versión ;-) •  Ubuntu # sudo aptitude install phpmyadmin Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 8. Desarrollando Proyecto •  Para el caso de Ubuntu, después de instalar, se debe realizar un enlace simbólico. # sudo ln –s /usr/share/phpmyadmin /var/www/ Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 9. Desarrollando Proyecto Si no tienes instalado Subversion, es hora de hacerlo. •  fedora, CentOS, RedHat: # yum install subversion •  Ubuntu # sudo aptitude install subversion Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 10. Desarrollando Proyecto •  Recomendamos crear un directorio que pueda contener más de una versión de Symfony. Este no debe ser accesible desde Internet. # mkdir –p /versiones-symfony/symfonyx_x_x/ # cd /versiones-symfony/symfonyx_x_x # svn co http://svn.symfony-project.com/tags/RELEASE_x_x_x/ . •  Una alternativa de descarga para el curso es la siguiente dirección: •  http://www.poodu.cl/symfony1_2_9.zip Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 11. Desarrollando Proyecto •  Ingresar al directorio bin de la instalación Symfony: # cd /versiones-symfony/symfonyx_x_x/data/bin •  Ejecutar script check_configuration. El nos detallará si nuestro sistema cumple con los requerimientos para la instalación de Symfony. # php check_configuration.php Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 12. Desarrollando Proyecto •  El comando symfony -V, para el caso de la instalación por Subversión, lo podremos ejecutar de la siguiente manera: # php /versiones-symfony/symfonyx_x_x/data/bin/symfony –V o # /versiones-symfony/symfonyx_x_x/data/bin/./symfony –V resultado: # symfony version x.x.x (/versiones-symfony/symfonyx_x_x/lib) Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 13. Desarrollando Proyecto  Obtener Comandos de Symfony: # php /versiones-symfony/symfonyx_x_x/data/bin/symfony O: # /versiones-symfony/symfonyx_x_x/data/bin/./symfony Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 14. Desarrollando Proyecto  Comandos de Symfony: Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 15. Proyecto
a
Desarrollar
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 16. Desarrollando Proyecto   Gestionador de Encuestas Open Source: •  Considere dos aplicaciones en el proyecto, una aplicación administrador y otra pública. •  La aplicación pública mostrará cada encuesta de acuerdo a una URL amigable (distinta). •  El administrador permitirá que un usuario con privilegios gestione distintos tipos de encuestas. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 17. Desarrollando Proyecto •  La aplicación permitirá crear una gran cantidad de tipo de encuestas. •  Permitir importar al Sistema una base de Usuario a través de un archivo csv o excel. •  Permitir la exportación de resultados. •  Permitir el trabajo con otras base de usuarios en el proceso de login al sistema. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 18. Desarrollando Proyecto •  Obtención de gráficos y estadísticas de acuerdo a respuestas obtenidas por encuesta. •  Soporte para varios idiomas. •  Canales RSS y API que permite la interacción con otros servicios. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 19. Desarrollando Proyecto •  La alternativa Open Source más conocida: Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 20. Comenzamos
el
Desarrollo
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 21. Creamos
el
Proyecto
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 22. Creamos el Proyecto  Crear el proyecto Encuesta: # mkdir /tu/directorio/web/encuesta # cd /tu/directorio/web/encuesta Dependiendo del sistema operativo y de la instalación realizada, puede ser necesario utilizar el prefijo php antes de cada comando Symfony. # php /versiones-symfony/symfonyx_x_x/data/bin/symfony generate:project encuesta O: # /versiones-symfony/symfonyx_x_x/data/bin/./symfony generate:project encuesta Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 23. Creamos el proyecto •  Estructura de Directorio Creada con el comando generate:project: Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 24. Creamos el proyecto •  La gran cantidad de directorios creados con el comando generate:project permiten estándarizar los desarrollos, proponiendo una distribución de la lógica de la programación que permita una eficiente mantención. Además, otro programador de Symfony puede entender rápidamente el proyecto a través de esta estructura y así formar un buen equipo de trabajo. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 25. Creamos el proyecto •  La tarea generate:project crea un atajo de Symfony dentro del directorio raíz del proyecto encuesta. Por lo mismo, de ahora en adelante, cada vez que utilicemos el comando ./symfony, lo estaremos ejecutando en la raíz del proyecto y NO desde la ruta o path del directorio donde descargamos symfony para su instalación. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 26. Crear
las
Aplicaciones
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 27. Creamos las Aplicaciones   Creamos la aplicación pública con el comando generate:app : # ./symfony generate:app - -escaping-strategy=on - - csrf-secret=UniqueSecret publico Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 28. Creamos las Aplicaciones   Creamos la aplicación administrador con el comando generate:app : # ./symfony generate:app - -escaping-strategy=on - - csrf-secret=UniqueSecret administrador Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 29. Creamos las Aplicaciones   Seguridad contemplada en Symfony. •  Protección contra ataques XSS (Cross-site scripting) - -escaping-strategy •  Evitar vulnerabilidades que permitan ejecutar código como VBScript o JavaScript en el contexto de otro sitio web. •  Evitar la modificación de variables entre dos páginas (ejemplo cookies o envío por URL) •  Evitar la inclusión de etiquetas aceptadas en HTML que ejecuten código malicioso. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 30. Creamos las Aplicaciones   Seguridad contemplada en Symfony. •  Protección contra ataques CSRF - -csrf-secret •  Evitar la falsificación de petición en sitios cruzados. •  Evitar Comandos no autorizados transmitidos por un usuario en el cual el sitio web confía. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 31. Creamos las Aplicaciones   Resumen seguridad contemplada en Symfony. •  --escaping-strategy: Permite escapar la salida para evitar ataques XSS. •  --csrf-secret: Permite tokens de sesión en los formularios para prevenir los ataques CSRF. Pasando estas dos opciones a la tarea, hemos asegurado nuestro futuro desarrollo de las dos vulnerabilidades más extendidas en la web. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 32. Creamos las Aplicaciones   a estructura de Directorios de cada aplicación L generada con el comando generate:app es similar a: Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 33. Creamos las Aplicaciones Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 34. Entornos
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 35. Entornos   Entornos: Si revisamos el directorio web/ de nuestro proyecto encontrarás una estructura similar a esta: Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 36. Entornos   Entornos: Los archivos index.php, publico_dev.php son llamados controladores frontales de la aplicación publico. •  La primera aplicación creada en un proyecto tiene el privilegio de utilizar el archivo index.php como uno de sus controladores. •  Es por eso que los nombres de los controladores frontales de la aplicación administrador (que fue creada en segundo lugar) son: administrador.php y administrador_dev.php Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 37. Entornos   Entornos • Entorno de desarrollo (dev) • Entorno de pruebas • Entorno intermedio • Entorno de producción (prod) Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 38. Entornos   Entorno de desarrollo (dev) •  Este es el ambiente utilizado por desarrolladores web para añadir nuevas funciones, corregir errores y realizar seguimientos a cada uno de los componentes que forman parte de la aplicación. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 39. Entorno  Diferencias de entornos •  Cada entorno no es más que un conjunto específico de configuraciones, ejemplo, el entorno de desarrollo (dev) considera un log para guardar información y la característica de caché está deshabilitada para que los cambios realizados por el desarrollador se tengan en cuenta de forma instantánea. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 40. Entorno   Diferencias de entornos •  Por el contrario, en el entorno de producción se considera habilitado el caché, pero la barra depuración deshabilitada, ya que éste entorno es el que visualizará el usuario público de nuestra aplicación. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 41. Entorno •  Definir un nuevo entorno en Symfony es tan sencillo como crear un nuevo controlador frontal. Más adelante en nuestro proyecto profundizaremos al respecto. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 42. Entorno •  Definir un nuevo entorno en Symfony es tan sencillo como crear un nuevo controlador frontal. Más adelante en nuestro proyecto profundizaremos al respecto. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 43. Controlador   Archivo web/index.php <?php Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 44. Controlador   Opciones del método getApplicationConfiguration. •  La primera opción indica la aplicación (publico). •  La segunda opción indica el entorno (dev). •  La tercera opción el modo debug, si éste está o no habilitado (false). Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 45. Servidor
Web
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 46. Configuración del Servidor Web <VirtualHost *:80> ServerName encuesta.localhost DocumentRoot /tu/directorio/web/encuesta/web DirectoryIndex index.php Alias /sf /versiones-symfony/symfonyx_x_x/data/web/sf Errorlog /var/log/httpd/encuestaError.log CustomLog /var/log/httpd/accessEncuesta.log common <Directory /versiones-symfony/symfonyx_x_x/data/web/sf> AllowOverride All Allow from All </Directory> <Directory /tu/directorio/web/encuesta/web> Allowoverride All Allow from All </Directory> </VirtualHost> Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 47. Configuración del Servidor Web   En caso de que aún no esté definido, agregar la directiva ServerName al archivo de configuración de Apache2: •  fedora, CentOS, RedHat # sudo vim /etc/httpd/conf/httpd.conf •  Ubuntu # sudo vim /etc/apache2/./apache2.conf Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 48. Configuración del Servidor Web  Directiva ServerName en archivo configuración Apache: ServerName servidorweb Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 49. Configuración del Servidor Web  Configuración archivo hosts: /etc/hosts c:windowssystem32driversetchosts 127.0.0.1 servidorweb encuesta.localhost Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 50. Configuración del Servidor Web   Reiniciamos Apache: •  fedora, CentOS, RedHat # sudo /etc/init.d/./httpd restart •  Ubuntu # sudo /etc/init.d/apache2 restart Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 51. Configuración del Servidor Web  Accedemos a la aplicación pública (prod) desde un navegador: http://encuesta.localhost Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 52. Configuración del Servidor Web  Un error Común: Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 53. Configuración del Servidor Web •  El anterior en esencia NO es un error, sino que Apache no puede encontrar las imágenes, hojas de estilos y archivos Javascript utilizados para la barra de depuración. Por lo tanto, se debe comprobar que existe la siguiente línea en la configuración del VirtualHost: Alias /sf /versiones-symfony/symfonyx_x_x/data/web/sf Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 54. Proyecto, Aplicaciones y Módulos •  Una alternativa para generar el alias podría ser crear un enlace simbólico o copiar directamente los contenidos del directorio: /versiones-symfony/symfonyx_x_x/data/web/sf/ al directorio: /directorio/web/blog/web/sf/ Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 55. Configuración del Servidor Web  Si todo está correcto, deberíamos ver lo siguiente: Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 56. Configuración del Servidor Web  Accedemos a la aplicación pública (dev) desde un navegador: http://encuesta.localhost/publico_dev.php Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 57. Configuración del Servidor Web  Si todo está correcto, deberíamos ver lo siguiente: Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 58. Configuración del Servidor Web •  La principal diferencia es que el controlador frontal del entorno de desarrollo nos muestra una barra de depuración en la parte superior derecha. •  La barra de depuración web se mostrará en todas las páginas del entorno de desarrollo. En ella podemos encontrar (configuración de la aplicación, los mensajes de log de la petición actual, las sentencias SQL ejecutadas en la base de datos, información sobre la memoria consumida y el tiempo total de ejecución). Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 59. Levantamiento
Servidor
 Subversion
 Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 60. Levantamiento Servidor Subversion   Para qué necesitamos Subversion. •  Trabajar con más confianza. •  Volver a una versión anterior en caso de que un cambio rompa la aplicación. •  Permitir a dos o más personas trabajar simultáneamente sobre un mismo proyecto. •  Disponer de acceso directo a todas las versiones de la aplicación. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 61. Levantamiento Servidor Subversion •  Al comienzo de esta presentación instalamos subversion para ejecutar el comando svn co que nos permitió descargar la última versión estable de Symfony. •  Por lo tanto comenzaremos a utilizar Subversion. Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 62. Levantamiento Servidor Subversion   Crear repositorio para nuestro proyecto. •  fedora, CentOS, RedHat y Ubuntu # sudo mkdir /repositorios # sudo svnadmin create - -fs-type fsfs /repositorios/encuesta Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 63. Levantamiento Servidor Subversion   Crear la estructura básica en el repositorio. •  fedora, CentOS, RedHat y Ubuntu # sudo svn mkdir –m “creación de estructura inicial” file:/// repositorios/encuesta/trunk file:///repositorios/encuesta/tags file:///repositorios/encuesta/branches Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 64. Levantamiento Servidor Subversion   Realizamos un checkout de nuestro directorio trunk. # cd /tu/directorio/web/encuesta # sudo svn co file:///repositorios/encuesta/trunk/ . Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 65. Levantamiento Servidor Subversion   Borramos los contenidos de los directorios cache/ y log/ dentro de nuestro proyecto, ya que no son de interés para nuestro repositorio Subversión. # sudo rm -rf cache/* log/* Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 66. Levantamiento Servidor Subversion   Le damos permiso adecuados a los directorios cache/ y log/ dentro de nuestro proyecto, para que el servidor web pueda escribir en ellos. # sudo chmod 777 cache log Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 67. Levantamiento Servidor Subversion   Dado que es la primera vez que subimos los archivos al servidor Subversion (repositorio encuesta) vamos importar, para ello antes debemos indicarle a nuestro cliente subversión (quién controla todo dentro de nuestro proyecto) todos los archivos que vamos a considerar. # svn add * Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 68. Levantamiento Servidor Subversion Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 69. Levantamiento Servidor Subversion  Como no vamos a importar los archivos de los directorios cache/ y log/, debemos añadirlos a la lista de archivos ignorados. # svn propedit svn:ignore cache Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 70. Levantamiento Servidor Subversion •  En estos momentos tenemos abierto el editor de archivo configurado por defecto en nuestro equipo. Como queremos ignorar todos los contenidos de este directorio, realizamos lo sgte: * •  Guardamos y Cerramos el archivo Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 71. Levantamiento Servidor Subversion  Repetimos el proceso para el directorio log/. # svn propedit svn:ignore log Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 72. Levantamiento Servidor Subversion •  Y agregamos el * , para posteriormente guardar y cerrar el archivo. * Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 73. Levantamiento Servidor Subversion •  Para finalizar realizamos la importación al servidor Subversion. # svn import -m “Primera importación” . file:/// repositorios/encuesta/trunk Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 74. Desarrollando una Aplicación Rodrigo Miranda Blog: www.rodrigomiranda.cl
  • 75. Preguntas?
 Rodrigo Miranda Blog: www.rodrigomiranda.cl

Notas del editor

  1. ¿Por qué Symfony genera tantos archivos? Una de las principales ventajas de utilizar un framework completo es que puedes estandarizar tus desarrollos. Gracias a la estructura de archivos y directorios por defecto de Symfony, cualquier programador con ciertos conocimientos de Symfony es capaz de continuar el desarrollo de cualquier proyecto Symfony. En cuestión de minutos será capaz de profundizar en el código, solucionar errores y añadir nuevas características.
  2. Un ataque CSRF fuerza al navegador web validado de una víctima a enviar una petición a una aplicación web vulnerable, la cual entonces realiza la acción elegida a través de la víctima. Al contrario que en los ataques XSS, los cuales explotan la confianza que un usuario tiene en un sitio en particular, el cross site request forgery explota la confianza que un sitio tiene en un usuario en particular. – escaping-strategy: Permite escapar la salida para evitar ataques XSS – csrf-secret: Permite tokens de sesión en los formularios para prevenir los ataques CSRF
  3. Un ataque CSRF fuerza al navegador web validado de una víctima a enviar una petición a una aplicación web vulnerable, la cual entonces realiza la acción elegida a través de la víctima. Al contrario que en los ataques XSS, los cuales explotan la confianza que un usuario tiene en un sitio en particular, el cross site request forgery explota la confianza que un sitio tiene en un usuario en particular. – escaping-strategy: Permite escapar la salida para evitar ataques XSS – csrf-secret: Permite tokens de sesión en los formularios para prevenir los ataques CSRF
  4. La opción fsfs proporciona otro enfoque en el manejo de ficheros en el repositorio, aunque proporciona todas las características de Berkeley DB pero sin ser en el sentido estricto una base de datos. FSFS, Además mejora las transacciones incluyendo en un único fichero de transacción todas las modificaciones de un usuario, reduce el tamaño del repositorio en torno a un 20% es independiente de la plataforma.
  5. La opción fsfs proporciona otro enfoque en el manejo de ficheros en el repositorio, aunque proporciona todas las características de Berkeley DB pero sin ser en el sentido estricto una base de datos. FSFS, Además mejora las transacciones incluyendo en un único fichero de transacción todas las modificaciones de un usuario, reduce el tamaño del repositorio en torno a un 20% es independiente de la plataforma.