Tuesday, August 5, 2008

Autenticacion LDAP en zope2

La autenticación LDAP en zope2 se ha hecho mas fácil con los eggs. Basta con agregar al listado de eggs necesarios en buildout el nombre Products.PloneLDAP.
Este producto depende a su vez de
  • python-ldap
  • LDAPUserFolder
  • LDAPMultiPlugins
todos ellos descargados automáticamente durante el buildout.

Ahora, Centos 4 viene con una versión antigua de LDAP que no es compatible con python-ldap. Para compilar este paquete hay que instalar ldap-2.3 en paralelo con la versión de la distro. Una vez hecho esto hay que bajar y generar una versión local del egg python-ldap, que se enlace las nuevas librerías:
# Bajar solamente el egg
$ easy_install -b downloads/ python-ldap
$ cd downloads/python-ldap
Luego se edita el archivo setup.cfg cambiando las variables library_dirs e include_dirs para que apunten al directorio de librerías e includes de la nueva versión de LDAP. Una vez hecho esto, se genera el egg
$ ./setup.py bdist_egg

Este egg puede luego ser copiado en el directorio egg de la instancia a desarrollar.

Para activar la autenticación LDAP, desde la interface ZMI del zope se visita la carpeta acl_user del sitio plone. En ella se cre un 'Plone LDAP Plugin', digamos con el nombre ldapmaster. Luego todas sus funcionalidades deben ser activadas (site/acl_users/ldapmaster lengüeta "activate"). Finalmente hay que prioritizar el uso de la autenticación ldap, visitando site/acl_users/plugins, seleccionando primero el Plugin Type "Properties Plugins" y poniendo de primero a ldapmaster. Luego se hace lo propio "UserManagement Plugins".

Desarrollo y Despliegue en zope2+Plone3

A continuación sigue como desarrollar y desplegar un sitio basado en zope 2 y Plone 3 usando egg.

Instalar el entorno virtual

Como siempre comenzamos instalando un entorno virtual para trabajar con comodidad

# con una version previa de easy_install, instalar virtualenv
$ wget http://peak.telecommunity.com/dist/ez_setup.py
$ sudo python2.4 ez_setup
$ sudo easy_install-2.4 virtualenv

# crear el entorno virtual de python

# y comenzar a trabajar en el
$ virtualenv ~/entorno
$ cd ~/entorno
$ source bin/activate

Instalación del Zope 2 y Plone 3

Luego instalamos ZopeSkel, que nos generará un buildout.cfg que se adaptará al tipo de proyecto de zope2 que querramos:
$ easy_install ZopeSkel

Podemos ver que clase de proyectos podemos crear con ZopeSkel del siguiente modo:
$ paster create --list-templates

Luego creamos el proyecto zope2+plone3 propiamente, hacemos el bootstrap y el buildout:
$ paster create -t plone3_buildout myPlone
$ cd myPlone
$ python bootstrap
$ bin/buildout
Posteriormente podremos usar la opción -No en el buildout para que no chequee que cada egg bajado tenga la última versión.

Para arrancar el zope:
$ bin/instance fg

Despliegue

Como ya es costumbre, los productos que deseemos agregar a nuestra instancia se agregan a la variable egg de buildout.cfg y se vuelve a reconstruir el proyecto. Si el producto tiene algún archivo de configuración zcml, este debe ser agregado en la sección zcml.

Los eggs de desarrollo deben ser registrados tanto en eggs, como en la variable develop.

Desarrollo

Para desarrollar un egg, se usa de nuevo paster en el directorio src de la instancia en cuestion:
$ paster create -t plone mi.producto

Como siempre las dependencias de este producto van en su setup.cfg.