SlideShare una empresa de Scribd logo
1 de 23
Descargar para leer sin conexión
menttes
 corporate training




                      zc.buildout para
                      desarrolladores Plone


                      Emanuel Sartor
                      emanuel@menttes.com
¿Qué es un buildout?




                       menttes
¿Qué es un buildout?




 La palabra buildout hace referencia a una
 descripción de un conjunto de partes y al software
 para crear y ensamblar esas partes.


 A menudo se usa informalmente para hacer
 referencia a un sistema instalado basado en la
 definición de un buildout.




                                             menttes
¿Qué es un buildout?




 Por ejemplo, si estamos creando una aplicación
 llamada Foo, entonces el buildout de Foo será la
 colección de configuraciones y aplicaciones
 específicas que permiten crear una instancia de la
 aplicación.

 Informalmente podríamos referirnos a tal instancia
 como el buildout de Foo.




                                            menttes
¿Qué es un buildout?



 zc.buildout es una herramienta que nos permite
 definir buildouts. Estas son sus principales
 características:

 ● Permite defnición de buildouts de forma declarativa
 ● Basado en python

 ● Orientado a desarrollador

 ● Repetible

 ● Es fácil trabajar con eggs




                                             menttes
Todo muy lindo...

¿Pero cómo me ayuda esto en el desarrollo
                Plone?




                                  menttes
Desarrollo Plone


 Para configurar un entorno de desarrollo,
 usualmente los siguientes pasos son requeridos:

 ● Descargar, compilar e instalar Zope
 ● Crear una instancia Zope y configurarla

 ● Descargar e instalar Plone

 ● Instalar productos y eggs adicionales requeridos


   por mi proyecto
 ● Agregar a la instancia productos y paquetes que


   estoy desarrollando



                                             menttes
Desarrollo Plone


 Todos estos pasos se pueden realizar manualmente,
 pero esto genera una serie de problemas:

 ● Lento para generar nuevos entornos de desarrollo.
 ● Cada desarrollador es responsable de crear su


   entorno de desarrollo, y algunas diferencia sutiles
   en la configuración puede desembocar en errores
   en el código.

 Todo esto puede ser automático usando
 zc.buildout.


                                              menttes
Mmm... suena bien, pero seguro que tengo
 que leer cientos de tutoriales y un par de
       libros para usar zc.buildout.

  ¿Cómo harías todo eso con zc.buildout?




                                    menttes
Desarrollo Plone con zc.buildout



Vamos a empezar creando un buildout que descargue
Zope, lo compile, lo instale, cree una instancia y la
configure.

 $ mkdir buildout

 $ cd buildout

 $ wget http://svn.zope.org/zc.buildout/trunk/bootstrap/bootstrap.py

 $ vim buildout.cfg




                                                          menttes
buildout.cfg

 [buildout]
 parts =
   zope2
   instance


 [zope2]
 recipe = plone.recipe.zope2install
 url = http://www.zope.org/Products/Zope/2.10.5/Zope-2.10.5-final.tgz


 [instance]
 recipe = plone.recipe.zope2instance
 zope2-location = ${zope2:location}
 user = admin:admin
 http-address = 8080
 debug-mode = on
 verbose-security = on



                                                                 menttes
buildout.cfg




 La sección [buildout] es el punto de inicio del
 archivo. Este lista un número de partes las cuales
 serán configuradas más adelante en el archivo.




                                             menttes
buildout.cfg




 Cada parte tiene una receta (recipe) asociada, la
 cual es el nombre de un egg que sabe cómo realizar
 una tarea determinada, por ejemplo, compilar Zope
 o crear una instancia.




                                           menttes
buildout.cfg




 Una receta toma típicamente algunas opciones de
 configuración.




                                          menttes
Hasta ahora tenemos...




 ●   bootstrap.py: es un script que va a instalar
     setuptools y zc.buildout en el directorio buildout
     que creamos sin interferir con los paquetes
     instalados globalmente.

 ●   buidout.cfg: la definición de un buildout que
     instala Zope y configura una instancia.




                                                 menttes
zc.buildout en acción


 $ python2.4 bootstrap.py

 $ bin/buildout

 [esperamos un rato]

 $ bin/instance fg

 Listo, ya podemos acceder a nuestra instancia Zope
 2.10.5 apuntando nuestro navegador a
 http://localhost:8080


                                           menttes
zc.buildout en acción


 Supongamos que por error instalamos Zope 2.10.5,
 pero que en realidad necesitabamos instalar la
 versión 2.10.4. Supongamos también que queremos
 que la instancia ocupe el puerto 8090 en lugar del
 8080.

 En ese caso, en el archivo buildout.cfg modificamos
 la URL de la cuál se descarga Zope, así también
 como el número de puerto y luego volvemos a
 ejecutar:

 $ bin/buildout

                                            menttes
Bien... comienzo a sentirme mejor.

    ¿Cómo instalamos Plone?




                               menttes
buildout.cfg (primera parte)


 [buildout]
 parts =
   zope2
   instance
   plone
 eggs =


 [plone]
 recipe = plone.recipe.plone
 # recipe = plone.recipe.plone==3.0.1


 [zope2]
 recipe = plone.recipe.zope2install
 url = ${plone:zope2-url}



                                        menttes
buildout.cfg (segunda y última parte)



 [instance]
 recipe = plone.recipe.zope2instance
 zope2-location = ${zope2:location}
 user = admin:admin
 http-address = 8080
 debug-mode = on
 verbose-security = on
 eggs =
    ${buildout:eggs}
    ${plone:eggs}
 zcml =

 products =
   ${plone:products}




                                        menttes
buildout.cfg



 Las recetas pueden exponer variables para ser
 usadas por otras partes en la configuración del
 buildout.

 Por ejemplo, en [zope2] se hace referencia
 a ${plone:zope2-url}, que es una variable emitida
 por la parte [plone] y que tiene como valor el URL
 del Zope adecuado para la versión de Plone a
 instalar.




                                             menttes
buildout.cfg




 Se puede especificar explícitamente la versión de la
 receta a utilizar (recordar que las recetas son eggs).
 Un ejemplo de esto es el comentario en la sección
 [plone] en el que se especifica que se usará la
 versión 3.0.1 de la receta plone.recipe.plone.




                                               menttes
menttes
 corporate training




                      Muchas gracias

Más contenido relacionado

Similar a zc.buildout para desarrolladores Plone

Curso Plone Secundo Sesion
Curso Plone   Secundo SesionCurso Plone   Secundo Sesion
Curso Plone Secundo Sesion
ajussis
 
Plone - Introducción y instalación
Plone - Introducción y instalaciónPlone - Introducción y instalación
Plone - Introducción y instalación
ajussis
 
Equipo9
Equipo9Equipo9
Equipo9
CUI
 
Crea tus instaladores para linux (fedora, ubuntu, etc) sencillamente
Crea tus instaladores para linux (fedora, ubuntu, etc) sencillamenteCrea tus instaladores para linux (fedora, ubuntu, etc) sencillamente
Crea tus instaladores para linux (fedora, ubuntu, etc) sencillamente
Kuboosoft
 
Compilación del Kernel
Compilación del KernelCompilación del Kernel
Compilación del Kernel
Juan Sánchez
 
2290277 Instalacion De Un Servidor De Base De Datos Postgre Sql Apache Jboss ...
2290277 Instalacion De Un Servidor De Base De Datos Postgre Sql Apache Jboss ...2290277 Instalacion De Un Servidor De Base De Datos Postgre Sql Apache Jboss ...
2290277 Instalacion De Un Servidor De Base De Datos Postgre Sql Apache Jboss ...
Freddy Banguero
 

Similar a zc.buildout para desarrolladores Plone (20)

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
 
Anatomia de Plone
Anatomia de PloneAnatomia de Plone
Anatomia de Plone
 
Curso Plone Secundo Sesion
Curso Plone   Secundo SesionCurso Plone   Secundo Sesion
Curso Plone Secundo Sesion
 
Plone - Introducción y instalación
Plone - Introducción y instalaciónPlone - Introducción y instalación
Plone - Introducción y instalación
 
Equipo9
Equipo9Equipo9
Equipo9
 
Practica adicional
Practica adicionalPractica adicional
Practica adicional
 
Despues de instalar fedora 14
Despues de instalar fedora 14Despues de instalar fedora 14
Despues de instalar fedora 14
 
Crea tus instaladores para linux (fedora, ubuntu, etc) sencillamente
Crea tus instaladores para linux (fedora, ubuntu, etc) sencillamenteCrea tus instaladores para linux (fedora, ubuntu, etc) sencillamente
Crea tus instaladores para linux (fedora, ubuntu, etc) sencillamente
 
Taller de redes
Taller de redesTaller de redes
Taller de redes
 
TALLER DE REDES 2 PERIODO
TALLER DE REDES 2 PERIODO TALLER DE REDES 2 PERIODO
TALLER DE REDES 2 PERIODO
 
Taller de redes
Taller de redesTaller de redes
Taller de redes
 
Greach 2011 : Creando Plugins Con Griffon
Greach 2011 : Creando Plugins Con GriffonGreach 2011 : Creando Plugins Con Griffon
Greach 2011 : Creando Plugins Con Griffon
 
Visual studio code
Visual studio codeVisual studio code
Visual studio code
 
Visual studio c_
Visual studio c_Visual studio c_
Visual studio c_
 
sistema operativo
sistema operativosistema operativo
sistema operativo
 
Compilación del Kernel
Compilación del KernelCompilación del Kernel
Compilación del Kernel
 
CURSO DE PROGRAMACION BASICA - Cap 4
CURSO DE PROGRAMACION BASICA - Cap 4CURSO DE PROGRAMACION BASICA - Cap 4
CURSO DE PROGRAMACION BASICA - Cap 4
 
Instalar odoo 9 en Linux Debian
Instalar odoo 9 en Linux DebianInstalar odoo 9 en Linux Debian
Instalar odoo 9 en Linux Debian
 
2290277 Instalacion De Un Servidor De Base De Datos Postgre Sql Apache Jboss ...
2290277 Instalacion De Un Servidor De Base De Datos Postgre Sql Apache Jboss ...2290277 Instalacion De Un Servidor De Base De Datos Postgre Sql Apache Jboss ...
2290277 Instalacion De Un Servidor De Base De Datos Postgre Sql Apache Jboss ...
 
Getting Started with ChatBots
Getting Started with ChatBotsGetting Started with ChatBots
Getting Started with ChatBots
 

Más de Roberto Allende

Introducción a Leanstartup
Introducción a LeanstartupIntroducción a Leanstartup
Introducción a Leanstartup
Roberto Allende
 
Introduccion a Python por Facundo Batista
Introduccion a Python por Facundo BatistaIntroduccion a Python por Facundo Batista
Introduccion a Python por Facundo Batista
Roberto Allende
 

Más de Roberto Allende (20)

Fearless Coding with Test Driven Development
Fearless Coding with Test Driven DevelopmentFearless Coding with Test Driven Development
Fearless Coding with Test Driven Development
 
Creencias y cultura popular para armar el equipo de un Startup
Creencias y cultura popular para armar el equipo de un StartupCreencias y cultura popular para armar el equipo de un Startup
Creencias y cultura popular para armar el equipo de un Startup
 
11 Slides de Droidcon NYC
11 Slides de Droidcon NYC11 Slides de Droidcon NYC
11 Slides de Droidcon NYC
 
Startup escalables y organicos
Startup escalables y organicosStartup escalables y organicos
Startup escalables y organicos
 
Microservices y la era Post Industrial de la Web
Microservices y la era Post Industrial de la WebMicroservices y la era Post Industrial de la Web
Microservices y la era Post Industrial de la Web
 
La idea, de la epifanía a la empresa escalable
La idea, de la epifanía a la empresa escalableLa idea, de la epifanía a la empresa escalable
La idea, de la epifanía a la empresa escalable
 
Emprender en Argentina: 8 creencias y algunas experiencias
Emprender en Argentina: 8 creencias y algunas experienciasEmprender en Argentina: 8 creencias y algunas experiencias
Emprender en Argentina: 8 creencias y algunas experiencias
 
Innovar: comunicar y hacer
Innovar: comunicar y hacerInnovar: comunicar y hacer
Innovar: comunicar y hacer
 
Introducción a Leanstartup
Introducción a LeanstartupIntroducción a Leanstartup
Introducción a Leanstartup
 
Taller de Gamification
Taller de GamificationTaller de Gamification
Taller de Gamification
 
PloneGov: Cooperación, participación y Software Libre en Gobierno
PloneGov: Cooperación, participación y Software Libre en Gobierno PloneGov: Cooperación, participación y Software Libre en Gobierno
PloneGov: Cooperación, participación y Software Libre en Gobierno
 
Menttes: exportando servicios basados en Software Libre
Menttes: exportando servicios basados en Software LibreMenttes: exportando servicios basados en Software Libre
Menttes: exportando servicios basados en Software Libre
 
Introducción al desarrollo en Plone
Introducción al desarrollo en PloneIntroducción al desarrollo en Plone
Introducción al desarrollo en Plone
 
Catedral y Bazaar
Catedral y BazaarCatedral y Bazaar
Catedral y Bazaar
 
Desarrollo de Productos con Archetypes y ArchGenXML
Desarrollo de Productos con Archetypes y ArchGenXMLDesarrollo de Productos con Archetypes y ArchGenXML
Desarrollo de Productos con Archetypes y ArchGenXML
 
Curso Zope Page Templates y Metal
Curso Zope Page Templates y MetalCurso Zope Page Templates y Metal
Curso Zope Page Templates y Metal
 
AJAX a cuerda Lo básico sobre AJAX y su funcionamiento
AJAX a cuerda
Lo básico sobre AJAX y su funcionamientoAJAX a cuerda
Lo básico sobre AJAX y su funcionamiento
AJAX a cuerda Lo básico sobre AJAX y su funcionamiento
 
Desarrollando aplicaciones web con Zope 3
Desarrollando aplicaciones web con Zope 3Desarrollando aplicaciones web con Zope 3
Desarrollando aplicaciones web con Zope 3
 
PloneGov: un proyecto internacional de cooperación entre Gobiernos abierto a ...
PloneGov: un proyecto internacional de cooperación entre Gobiernos abierto a ...PloneGov: un proyecto internacional de cooperación entre Gobiernos abierto a ...
PloneGov: un proyecto internacional de cooperación entre Gobiernos abierto a ...
 
Introduccion a Python por Facundo Batista
Introduccion a Python por Facundo BatistaIntroduccion a Python por Facundo Batista
Introduccion a Python por Facundo Batista
 

Último

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 

Último (11)

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 

zc.buildout para desarrolladores Plone

  • 1. menttes corporate training zc.buildout para desarrolladores Plone Emanuel Sartor emanuel@menttes.com
  • 2. ¿Qué es un buildout? menttes
  • 3. ¿Qué es un buildout? La palabra buildout hace referencia a una descripción de un conjunto de partes y al software para crear y ensamblar esas partes. A menudo se usa informalmente para hacer referencia a un sistema instalado basado en la definición de un buildout. menttes
  • 4. ¿Qué es un buildout? Por ejemplo, si estamos creando una aplicación llamada Foo, entonces el buildout de Foo será la colección de configuraciones y aplicaciones específicas que permiten crear una instancia de la aplicación. Informalmente podríamos referirnos a tal instancia como el buildout de Foo. menttes
  • 5. ¿Qué es un buildout? zc.buildout es una herramienta que nos permite definir buildouts. Estas son sus principales características: ● Permite defnición de buildouts de forma declarativa ● Basado en python ● Orientado a desarrollador ● Repetible ● Es fácil trabajar con eggs menttes
  • 6. Todo muy lindo... ¿Pero cómo me ayuda esto en el desarrollo Plone? menttes
  • 7. Desarrollo Plone Para configurar un entorno de desarrollo, usualmente los siguientes pasos son requeridos: ● Descargar, compilar e instalar Zope ● Crear una instancia Zope y configurarla ● Descargar e instalar Plone ● Instalar productos y eggs adicionales requeridos por mi proyecto ● Agregar a la instancia productos y paquetes que estoy desarrollando menttes
  • 8. Desarrollo Plone Todos estos pasos se pueden realizar manualmente, pero esto genera una serie de problemas: ● Lento para generar nuevos entornos de desarrollo. ● Cada desarrollador es responsable de crear su entorno de desarrollo, y algunas diferencia sutiles en la configuración puede desembocar en errores en el código. Todo esto puede ser automático usando zc.buildout. menttes
  • 9. Mmm... suena bien, pero seguro que tengo que leer cientos de tutoriales y un par de libros para usar zc.buildout. ¿Cómo harías todo eso con zc.buildout? menttes
  • 10. Desarrollo Plone con zc.buildout Vamos a empezar creando un buildout que descargue Zope, lo compile, lo instale, cree una instancia y la configure. $ mkdir buildout $ cd buildout $ wget http://svn.zope.org/zc.buildout/trunk/bootstrap/bootstrap.py $ vim buildout.cfg menttes
  • 11. buildout.cfg [buildout] parts = zope2 instance [zope2] recipe = plone.recipe.zope2install url = http://www.zope.org/Products/Zope/2.10.5/Zope-2.10.5-final.tgz [instance] recipe = plone.recipe.zope2instance zope2-location = ${zope2:location} user = admin:admin http-address = 8080 debug-mode = on verbose-security = on menttes
  • 12. buildout.cfg La sección [buildout] es el punto de inicio del archivo. Este lista un número de partes las cuales serán configuradas más adelante en el archivo. menttes
  • 13. buildout.cfg Cada parte tiene una receta (recipe) asociada, la cual es el nombre de un egg que sabe cómo realizar una tarea determinada, por ejemplo, compilar Zope o crear una instancia. menttes
  • 14. buildout.cfg Una receta toma típicamente algunas opciones de configuración. menttes
  • 15. Hasta ahora tenemos... ● bootstrap.py: es un script que va a instalar setuptools y zc.buildout en el directorio buildout que creamos sin interferir con los paquetes instalados globalmente. ● buidout.cfg: la definición de un buildout que instala Zope y configura una instancia. menttes
  • 16. zc.buildout en acción $ python2.4 bootstrap.py $ bin/buildout [esperamos un rato] $ bin/instance fg Listo, ya podemos acceder a nuestra instancia Zope 2.10.5 apuntando nuestro navegador a http://localhost:8080 menttes
  • 17. zc.buildout en acción Supongamos que por error instalamos Zope 2.10.5, pero que en realidad necesitabamos instalar la versión 2.10.4. Supongamos también que queremos que la instancia ocupe el puerto 8090 en lugar del 8080. En ese caso, en el archivo buildout.cfg modificamos la URL de la cuál se descarga Zope, así también como el número de puerto y luego volvemos a ejecutar: $ bin/buildout menttes
  • 18. Bien... comienzo a sentirme mejor. ¿Cómo instalamos Plone? menttes
  • 19. buildout.cfg (primera parte) [buildout] parts = zope2 instance plone eggs = [plone] recipe = plone.recipe.plone # recipe = plone.recipe.plone==3.0.1 [zope2] recipe = plone.recipe.zope2install url = ${plone:zope2-url} menttes
  • 20. buildout.cfg (segunda y última parte) [instance] recipe = plone.recipe.zope2instance zope2-location = ${zope2:location} user = admin:admin http-address = 8080 debug-mode = on verbose-security = on eggs = ${buildout:eggs} ${plone:eggs} zcml = products = ${plone:products} menttes
  • 21. buildout.cfg Las recetas pueden exponer variables para ser usadas por otras partes en la configuración del buildout. Por ejemplo, en [zope2] se hace referencia a ${plone:zope2-url}, que es una variable emitida por la parte [plone] y que tiene como valor el URL del Zope adecuado para la versión de Plone a instalar. menttes
  • 22. buildout.cfg Se puede especificar explícitamente la versión de la receta a utilizar (recordar que las recetas son eggs). Un ejemplo de esto es el comentario en la sección [plone] en el que se especifica que se usará la versión 3.0.1 de la receta plone.recipe.plone. menttes
  • 23. menttes corporate training Muchas gracias