Buildout y Plone 3

Descripción general

Una herramienta para administrar, a través de un archivo de configuración declaratoria, las partes y componentes de un desarrollo con Python. Dichas partes no están limitadas a componentes o código Python.

La parte más poderosa de buildout es que puede extenderse con el uso de “recetas” que pueden instalar componentes más complicados simplemente agregando nuevas secciones a la configuración. Buildout puede instalar diversos paquetes de Python fácilmente porque está conectado con el índice de paquetes de Python (PyPI).

Algunos términos importantes

Hay que entender varios conceptos antes de continuar tales como:

Requisitos previos

Existen instrucciones detalladas para la instalación de requisitos, pero en general se necesita lo siguiente:

Instalando entornos virtuales de Python

Para esto consulte los diversos modos de instalación de entornos virtuales de Python.

Instalando Setuptools

Para esto consulte los diversos modos de instalación de setuptools y easy_install.

Instalando ZopeSkel

Para esto consulte los diversos modos de instalación de ZopeSkel.

Instalando dependencias en distribuciones basadas en Debian GNU/Linux

Para para distribuciones basadas en Debian GNU/Linux, debe instalar los requisitos previos con el siguiente comando:

# aptitude install python2.4-dev python2.4-imaging python-profiler python2.4-setuptools libc6-dev

Creación de un buildout

Se puede generar un buildout utilizando un template de paster:

$ paster create -t plone3_buildout buildout.plone3

El template hace varias preguntas:

Selected and implied templates:
  ZopeSkel#plone3_buildout  A buildout for Plone 3 projects

  Variables:
    egg:      buildout.plone3
    package:  buildout.plone3
    project:  buildout.plone3

  Enter zope2_install (Path to Zope 2 installation; leave blank to fetch one) ['']:
  <si ya se tiene una instalación de Zope se puede usar poniendo aquí el path>
  Enter plone_products_install (Path to directory containing Plone products; leave blank to fetch one) ['']:
  <lo mismo aquí si ya se tienen los productos de Plone>
  Enter zope_user (Zope root admin user) ['admin']:
  <el usuario administrador del sitio>
  Enter zope_password (Zope root admin password) ['']:
  <el password para este usuario>
  Enter http_port (HTTP port) [8080]:
  <el puerto donde escuchará el servicio de Zope>
  Enter debug_mode (Should debug mode be "on" or "off"?) ['off']:
  <'on' para activar el modo de debug>
  Enter verbose_security (Should verbose security be "on" or "off"?) ['off']:
  <'on' para presentar detalles cuando ocurran errores de privilegios>
  ...
  ...
  ...
  -----------------------------------------------------------
  Generation finished
  You probably want to run python bootstrap.py and then edit
  buildout.cfg before running bin/buildout -v

  See README.txt for details
  -----------------------------------------------------------

Activación de un buildout

Para activar un buildout hay que ejecutar el script bootstrap.py con el mismo python con que se desea trabajar:

$ cd buildout.plone3
$ python2.4 bootstrap.py
...
...
...
$ bin/buildout -v
...
...
...
$ bin/instance fg

Directorios creados

bin/
Ejecutables de buildout y producidos por las partes.
bin/buildout
Script de zc.buildout.
bin/instance
Script de arranque de la instancia Zope.
bin/repozo
Script de repozo, es una herramienta que puede ser usado para crear un respaldo completo de la ZODB.
bin/zopepy
Script para hacer inmersiones interactivas de Python en el contexto de la instalación Zope / Plone.
downloads/
Software adicional descargado.
eggs/
Los eggs obtenidos e instalados de PyPI.
parts/
Todo el código, configuración y datos manejados por buildout.
products/
Los tradicionales Productos Zope.
src/
Código fuente de nuestros desarrollos.
var/
Los archivos Logs y archivo de ZODB de Zope (buildout nunca sobre escribe estos archivos).
var/filestorage
Contiene archivos de ZODB de Zope tales como Data.fs, Data.fs.index, Data.fs.lock y Data.fs.tmp de su sitio web Plone.
var/log
Contiene archivos de Logs de Zope tales como instance.log (archivo de errores) y instance-Z2.log (archivo de acceso).

Descripción de este ejemplo

Un ejemplo de un buildout funcional se muestra a continuación:

# definición de las partes que va a tener el buildout, cada parte es una
# sección de configuración y generalmente utiliza una receta específica
[buildout]

newest = false

parts =
    zope2
    productdistros
    instance
    zopepy

extends = http://dist.plone.org/release/3.3.6/versions.cfg

# ligas adicionales a pypi.python.org donde pueden encontrarse eggs
find-links =
    http://dist.plone.org/release/3.3.6
    http://dist.plone.org/thirdparty/

versions = versions

# Agregar eggs adicionales aquí elementtree es requerido por Plone
eggs =
    elementtree
    PIL

# Por cada paquete en desarrollo (dentro de src) se debe agregar una línea
# e.g.: develop = src/my.package
develop =
#    src/my.package

# Esta receta instala zope 2. Para usar la misma url que requiere plone se
# utiliza ${versions:zope2-url}. Es posible referirse con esta sintaxis a
# cualquier variable de una de las partes, así: ${parte:variable}
[zope2]
recipe = plone.recipe.zope2install
url = ${versions:zope2-url}

# Ligas a distribuciones de productos tradicionales de Zope.
# En nested-packages se pone el nombre del archivo (sin path) cuando
# una distribución incluye varios productos.
[productdistros]
recipe = plone.recipe.distros
urls =
nested-packages =
version-suffix-packages =

# esta receta inicializa la instancia de zope y utiliza los datos de las
# respuestas que se dieron al crear el buildout
[instance]
recipe = plone.recipe.zope2instance
zope2-location = ${zope2:location}
user = admin:admin
http-address = 8080
debug-mode = on
verbose-security = on

# Aquí se deben listar todos los eggs que zope debe poder ver
# incluyendo los de desarrollo que se definen arriba
# e.g. eggs = ${buildout:eggs} my.package
eggs =
    Plone
    ${buildout:eggs}
#    my.package

# Activar la inicialización de zcml de los paquetes que lo requieran
# e.g. zcml = my.package my.other.package
zcml =
#    my.package

# Directorios donde zope buscará productos
products =
    ${buildout:directory}/products
    ${productdistros:location}

# Interpreté de python generado con todos los paquetes activados en
# el path
[zopepy]
recipe = zc.recipe.egg
eggs = ${instance:eggs}
interpreter = zopepy
extra-paths = ${zope2:location}/lib/python
scripts = zopepy

[versions]
zope.testing = 3.8.7

En los comentarios en el código se explican las secciones del buildout.

Descarga código fuente

Para descargar el código fuente de este ejemplo ejecute el siguiente comando:

$ git clone https://github.com/plone-ve/buildout.plone3.git

Artículos relacionados

Ver también

Artículos sobre replicación de proyectos Python.

Vídeo tutorial llamado Using buildout to install Zope and Plone en Ingles

creado por WebLion at Penn State, activistas de PloneEdu.org

Referencias

los comentarios son proporcionados por Disqus

Editar este documento

El código fuente de este archivo esta hospedado en GitHub. Todos pueden actualizar y corregir errores en este documento con unos clic - sin necesidad de descargar.

  1. Vaya hacia el articulo Buildout y Plone 3 en GitHub.
  2. Presione el botón Fork. Este creara su propia copia personal de la documentación.
  3. Edite los archivos usando el editor de texto de GitHub desde su navegador Web
  4. Rellene en la caja de texto Commit message al final de la pagina indicando por que usted realizo estos cambios. Presione el botón Propose file change próximo a ese cuando haya finalizado.
  5. Luego diríjase a la página Send a pull request (no será necesario rellenar ningún texto adicional). Sólo tiene que pulsar el botón Send pull request.
  6. Sus cambios serán consultados por un revisor dentro de la pestaña Pull requests del proyecto en Github.

Para mas información básica acerca de como actualizar este manual y referencia a sintaxis Sphinx, por favor consulte la guía Escribiendo y actualizando el manual.