2. Sobre el Curso
Presentación del grupo
Objetivos de cada institución
Presentación del contenido
Temas grandes
Instalación de Zope y Plone, Configuración de
Zope, Mantenimiento Zope y Plone, Seguridad
(roles, permisos y flujo de trabajo, respaldos),
Tipos de Contenido, Funciones adicionales
Agenda
Dos veces a la semana
Jueves y Viernes 2-5 PM
Manera del trabajo
Interactiva, hacemos ejercicios todo el tiempo desde... hoy!
3. Primer sesión
Agenda de hoy
La historia de Plone
La comunidad: donde encontrar ayuda?
La relación entre Plone y Zope
Los requirimientos del sistema o hardware
La instalación del sistema usando UnifiedInstaller y Buildout
Manejo de Plone a través de Buildout
Caracteristicas de buildout.cfg
Productos adicionales
Instalación de productos adicionales a través de buildout.cfg
4. Historía de Zope y Plone
Historia de Plone
Su posición de “solo un otro CMS” en 2001 a uno de
los más serios en el mercado
Grande actualizacaión desde 2.5 a 3 en 2007
http://plone.org/countries/conosur/articulos/8-cosas-v
Ahora la ultima versión es 3.2.2
Grandes actualizaciones desde 2.1 (2005) y desde
2.5 (2006)
Todo empieza de Zope (el primer open-source
“servidor de aplicaciones”)
Plone corre sobre Zope 2 a través de un marco (framework) de
Zope = CMF (Content Management Framework)
5. Más sobre Zope
Zope es un servidor de aplicaciones web escrito lenguaje de
programación Python
http://es.wikipedia.org/wiki/Zope
La última versión es Zope 3
Su objetivo es fomentar el desarrollo de pegueños y reutilizables
componentes
A través de un código de integración se llama Five se puede usar
Zope 3 componentes en Plone
Además de productos de Zope, la comunidad Python ha creado
herramientas que usuarios de Zope estan adoptando
Lo más importante es “eggs” - manera para empacar, manejar y
distribuir productos Python
6. Que es Zope?
Otra iniciativa importante de la comunidad Python es WSGI (Python
Web Services Gateway Interface)
Para posiblitar que diferentes aplicaciones web pueden
intercambiar
En el principio en 1999 Zope casi no tenía competención
La situación ha cambiado y se ha introducido por ejemplo
Ruby-on-Rails,
Django
TurboGears y Pylons
El desarrollo de Zope y Plone esta todo el tiempo afectado con otros
iniciativas
Por ejemplo un servidor web Twisted utiliza zope.interface para
su interfaz, y Zope 3 esta utilizando códigos de Twister para
proveer soporte WSGI
7. Que es Plone?
Plone es un sistema de gestión de contenidos (del inglés,
CMS) que puede emplearse para construir un sitio web
Empleando Plone, personas sin conocimientos de
programación o sin ser expertos pueden contribuir al
contenido de un sitio web.
Además se usa Plone para sitios de intranet y DMS
(Sistema de Manejo de Documentos)
Los competidores de Plone son CMS de “upper-mid tier”
También tiene competencia entre los CMS comerciales
como Microsoft Office Sharepoint Server
8. La comunidad?
Se dice que la comunidad Plone es activa?
Varios nuevos productos cada semana
Desarrollo del base de sistema avanzando todo el
tiempo (ahora la versión actual es 3.3.1)
Próxima actualización grande: Plone 4 en el
principio del año 2009
Es Plone para mi organización?
Apoyo para la evaluación:
http://plone.org/documentation/faq/is-plone-for-me
Plone entre otros CMS
http://www.idealware.org/comparing_os_cms/download.p
9. Manejo del proyecto
Varios metodos
Los proyectos Plone soportan frecuentemente
principios Agile: prototipos rapidos y iteraciones
cortos
Como un CMS Plone es rapido listo “out-of-the-
box”, se puedo rapido mostrar algo para el cliente
Utilizando p.ej. un “issue tracker” Products.Poi
se involucran clientes y usuarios finales al
proyecto para reportar incidencias, errores y
sugerencias durante el desarrollo
10. Requirimientos
Recursos:
http://plone.org/documentation/how-to/plone-system-requirements
Software
Sistema operativo
Windows XP, OSX 10.4, Linux 2.6.x
Python 2.4
Hardware
Mínimo:
256MB RAM, 512MB espacio swap
512MB espacio en el disco
Recomendable:
512MB RAM
2GB espacio en el disco
11. Instalación de Plone
Recursos y manuales:
http://www.coactivate.org/projects/traducciones-plone/u
http://labs.menttes.com/plone/material-de-charlas/zc-bu
http://plone.org/documentation/tutorial/installing-plone-3
http://plone.org/countries/mx/buildout
http://blog.jazkarta.com/2009/08/25/best-practices-in-de
12. Plone Manualmente
Manejo de Plone “manualmente”
Los pasos para configurar un entorno de desarrollo:
• Descargar, compilar y instalar Zope
• Crear una instancia Zope y configurarla
• Descargar y instalar Plone
• Instalar productos y eggs adicionales
• Agregar a la instancia productos que estoy
desarrollando
13. Plone Manualmente
Hacer este manualmente causa problemas:
Lento para crear nuevos entornos de desarrollo
Cada desarrollador hace su propio entorno:
diferencias en las configuraciones pueden
desembocar en errores
Implementar actualizaciones y manejar
dependencias de los productos adicionales lento
TODO ESTE SE PUEDE HACER
AUTOMATICALMENTE CON BUILDOUT
14. Buildout
Opción preferida: Buildout
Conjunto de partes y software para crear y
ensamblar esas partes
Colección de configuraciones y aplicaciones
específicas
Sistema de Python Eggs (productos adicionales)
y setuptools para manejar la configuración de
Zope & Plone
Manejo de configuración y paquetes adicionales
desde solo un fichero de texto
Pero antes de Buildout... instalamos Zope y Plone!
15. La instalación con UnifiedInstaller
Manual de instalación (en inglés)
http://plone.org/documentation/tutorial/installing-plone-3
Root vs. User instalación
Root: instalación (preferible para producción)
/usr/local/Plone
Se crea un usuario “plone”, poner el como un
dueño de los ficheros, y configura para que
Zope corre como un usuario “plone”
User: instalación
Instalación $HOME/Plone
Zope corre como un usuario quien ha hecho la
instalación
16. UnifiedInstaller
Unified Installer es un paquete para instalar Zope,
Plone y Python
También incluye un script de instalación que fomenta
las buenas prácticas según la comunidad Plone
En caso de las problemas, si se ha usado Unified
Installer es más probable encontrar solución del foro de
discusió
Instrucciones para la instalación:
http://tinyurl.com/yj3rlmr
17. UnifiedInstaller
Zeo o Standalone?
UnifiedInstaller ofrece dos diferentes tipos de
instalaciones
ZEO (Zope Enterprise Objects)
Puede tener varios procesos de clientes de Zope
cuales comparten el mismo base de datos
Standalone
Más facil para implementar, integrar y controlar.
La opción mejor para ambiente de pruebas y
sitios que son muy grandes
Correr UnifiedInstaller
Requirimientos: gcc (GNU Compiler Collection), g++ (C++
extensions para gcc), GNU Make, GNU tar, bzip2 y gzip para
compresión
18. Instalación
Bajamos UnifiedInstaller
tar -zxf Plone-3.VERSION-UnifiedInstaller.tar.gz
cd Plone-3.VERSION-UnifiedInstaller
./install.sh standalone
Después de la instalación se muestra instrucciones para iniciar
Plone
Contraseña temporal de Admin situa el fichero adminPassword
Problemas para iniciar Zope son raras
Muchas veces la problema es que un otro proceso esta
ocupando el puerto 8080 que Zope utiliza por defecto
Si todo fue bien se puede acceder:
http://localhost:8080 : mensaje de bienvenida
http://localhost:8080/Plone : sitio Plone
http://localhost:8080/manage : interfaz del administrador para
Zope (busca la contraseña en el archivo adminPassword.txt)
19. Más instancias de Zope
Ubicación de la Instalación
Si instalado con root, por defecto Zope root situa en
• /usr/local/Plone/
Instancia de Zope por defecto situa en
• /usr/local/Plone/zinstance/
Para cambiarla: ./install.sh target=UBICACION
Como crear nuevas instancias?
./install.sh standalone –
instance=INSTANCIA_NOMBRE
Cada instancia de Zope necesita un propio puerto
Cambiar el puerto y muchas otros configuraciones:
a través de buildout.cfg
20. Buildout
Desde Plone 3.1 UnifiedInstaller utiliza Buildout
por defecto
Manejamos la configuración y instalación
automaticalmente usando
Fichero de configuración: buildout.cfg (situa en la
raíz de nuestra instancia, por defecto la carpeta
llama zinstance)
Un script para construir la instancia según la
información encontrado en dicho fichero de
configuración: bin/buildout
21. buildout.cfg
Contiene varias secciones
[buildout]
Opciones para todo el buildout
Parts: se escribe los siguientes partes del buildout.cfg
Find-links: se puede definir enlaces a los diferentes repositorios
para los eggs (por defecto se siempre busca tambien pypi)
extends = http://dist.plone.org/release/3.3/versions.cfg
Eggs: Python eggs (productos adicionales) que se instala
– sqlalchemy>=0.3,<0.4dev
[zope2]
Descarga el base de Zope / Plone
Instalar una versión especifica:
recipe = plone.recipe.plone==3.0.1
22. buildout.cfg
[productdistros]
– Manejo de productos Zope del estilo viejo - “old-style Zope products”
– urls =
http://example.com/dist/ExampleProduct-1.0.tgz
– Nested packaged = ExampleProductBundle-1.0.tgz
– Version-suffix-packages = AnotherExampleProduct-2.0.tgz
[instance]
Crea nueva instancia de Zope, y define configuraciones de el
Recipe = plone.recipe.zope2instance
23. Buildout.cfg en práctica
En terminos prácticos, más que todo se
necesita modificar solo tres secciones en
buildout.cfg
[buildlout]
eggs = instalar Python eggs
[productdistros]
urls = instalar Zope 2 productos
[instance]
zcml = información de configuración de Python
eggs
24. buildout.cfg
Para implementar cualquier cambio que se ha
hecho a buildout.cfg, es necesario correr
buildout en otra vez
– bin/buildout
– Por defecto hay que correr el script buildout en
la carpeta zinstance (esta buscando
buildout.cfg en la carpeta actual)
– Más información sobre los opciones para el
script buildout: buildout --help
25. Las carpetas de Buildout
./bin/
Script “instance” para iniciar / parar la instancia de Zope,
zopepy interpreter para hacer debug, y buildout
./eggs/
Paquetes eggs que buildout ha descargado
automaticalmente
./develop-eggs/
Espceficación de los eggs que se estan desarrollando, se los
definen en buildout.cfg
./downloads/
Ciertos recetas definido en buildout.cfg crear esta carpeta y
trae los productos automaticalmente de los repositorios
26. Las carpetas de Buildout
./products/
Para instalar productos estilo Zope, se desempaca los
paquetes en esta carpeta y recorre buildout
./src/
Codígo fuente de los paquetes customizados
./var/
Base de Datos (data.fs), logs
./parts/
Una area manejado automaticalmente por Buildout
No debería hacer cambios a esta carpeta (buildout
sobreescribe mayoría del contenido siempre cuando se lo
recorre)
27. Recursos para Buildout
Más recursos sobre buildout
http://plone.org/countries/mx/buildout
http://plone.org/documentation/tutorial/buildout
28. Productos Adicionales
Componentes reusables que aumentan los funciones de Plone
Core
Foros, galerias, blogs, herramientas de integración de base
de datos, sistemas de contactos y formularios, etc. etc.
Repositorios y directorios para
www.plone.org/products
www.contentmanagementsoftware.info
Python Package Index: http://pypi.python.org
El desarrollo relativamente activa
14.-15.9.2009 10 nuevos productos adicionales (en total
plone.org/products esta listando 3000 productos)
29. Productos adicionales
Se puede instalar productos a Plone con dos
diferentes tecnologías
“Old-style Zope 2 Products”
Python eggs
Cuando Zope encuentra un producto, se lo
agrega a ZMI Control_Panel/Products
Los productos instalados a Zope son
disponibles para instalar en Plone a través de
“Site setup” o “Configuración del sitio”
30. Productos estilo Zope 2
Productos de Zope 2 (hasta Plone 3 mayoría
de los productos eran así)
Se encuentran en paquetes de .tar.gz o .zip
Instalación:
Agrega el URL del paquete a buildout.cfg
(productdistros - urls)
desempaca el archivo a la carpeta
/INSTANCE_HOME/Products/
Reinicia Zope y instala el producto a través
de Configuración de Plone
31. Python eggs
Python eggs
Paquetes de Python
Carpeta raíz tiene un fichero setup.py
Nombre de productos es
“namespace”.”nombreDeProducto”,
p.ej. plonetheme.mytheme
Productos creados por Paster
Cheese Shop: Indicé de paquetes de Python
(repositorio central) (estilo p.ej. Dpgk de Debian)
32. Evaluación de Productos
Como saber si el producto sirve?
Cual es el estado? Release candidate, beta,
alfa...??
Cual es el ciclo de actualizaciones? Cuando fue la
ultima actualización?
Ver discusión en el foro de discusión
Se puede encontrar problemas que usuarios
han tenido?
Existe documentación?
33. Evaluación de Productos
Instalación
Nunca debe instalar los productos directamente a
una instancia de Zope en producción
Aún después probando que todo funciona en una
instancia de desarrollo:
Siempre debe tomar un respaldo de Data.fs
Prueba de instalar un skin
http://plone.org/products/plonetheme-stylized/
34. Instalación de un Skin
Entramos a PYPI: http://pypi.python.org
Buscamos a un producto que se llama
Plonetheme.Stylized
Veremos las instrucciones para la instalación
Entramos a buildout.cfg
Entramos la información necesario a sus
propios lugares
[buildout] eggs = ...
[instance] zcml = ...
35. Configuración del Sitio
Para entrar a configuración del sitio
http://localhost:8080/Plone/plone_control_panel
O a través del enlace “Site Setup” o “Configuración
del sitio”
Primero cambiamos la lengua:
Entra a Language
Elige Spanish
Haga clic en Save
36. Busqueda
Entramos a Busqueda
“Habilita la característica LiveSearch, que
muestra resultados en tiempo real si el
navegador soporta JavaScript.”
Opciones para eligir que tipos de contenido se
muestra en los resultados del busqueda
Se puede agregar nuevos tipos de contenido
Productos adicionales frecuentemente tiene
sus propios tipos
37. Calendario y Correo
Calendario
Eligir el primer día de semana
Y que estados de los elementos se muestra en el
calendario
Correo
Indica Servidor SMTP
Puerto, Usuario, contraseña
Nombre y dirección del remitente
El formulario general de contacto envia correos a
esta dirección
38. Errores y Etiquetado
Errores
“Esta página lista las excepciones que han ocurrido
en este sitio recientemente. Puede configurar
cuántas excepciones deberían guardarse y cuáles
deberían ser copiadas al/a los archivo(s) de
eventos de Zope.”
Enlaces a los error logs
Decidir que tipo de etiquetado (o markup) los
usuarios pueden utilizar
Permite / prohibe el comportamiento wiki
39. Filtrado HTML
Se filtra las etiquetas de HTML que son
consideradas como un riesgo de seguridad
Debe cuidarse en haciendo cambios
Por defecto, sólo están permitidas las etiquetas
definidas en XHTML
En particular, para permitir 'embed' como
etiqueta debe de eliminarla de 'Etiquetas no
deseadas' y agregarla como 'Etiquetas
personalizadas'
40. ZMI y mantenimiento
Interfaz de Administración de Zope
La configuración de sitio desde Plone
Por ejemplo, cambios a flujo de trabajo, CSS,
xhtml / page templates, vistas
Mantenimiento
Cerrar / reiniciar el servidor Zope
Tamaño de base de datos
Días del histórico de un objeto a mantener tras la
compactación
41. Navegación
Como se construye la navegación
Generar pestañas automáticamente
Generar pestañas para elementos que no sean
carpetas
Tipo de contenido mostrados
Que tipos de contenido mostramos en la
navegación
Filtro sobre el estado del flujo de trabajo