Zona HTML Zona Java Zona PHP Zona ASP Zona Bases de datos
Inicio > Tutoriales > Lenguajes de script > Python > Zope: El servidor de aplicaciones libre
-Tutoriales

Zope: El servidor de aplicaciones libre


Zope, Python y la programación web

. Introducción

Zope, una palabra que ya el lector posiblemente haya escuchado en alguna ocasión. Quizás incluso sepa que es una herramienta y que sirve para construir sitios web. Pero pocas veces se llega más alla en ese conocimiento, hasta ahora un tanto limitado, de lo que hay detrás de esta palabra.

Y hay mucho más. Zope es una arquitectura muy completa y por momentos compleja. Sin duda se la podría agrupar dentro de la vaga categoría de servidores de aplicaciones, es decir, productos que facilitan el desarrollo y ejecución de servidores de información en una red, normalmente Internet.

Intentando ir un poco más alla en esta vaga definición Zope son las iniciales de "Z Object Publishing Enviroment", un entorno para publicar objetos. Y es que sus orígenes parten de un diseño con el modelo de negocio de un periódico en mente tal y como se afirma en el que se convertirá en el libro de referencia de Zope que será publicado por O'Reilly y que se puede acceder ya desde el portal de Zope (http://www.zope.org).

En este mismo libro y en el prefacio se intenta también definir Zope, algo que incluso sus creadores lo encuentran difícil. En concreto ellos ven a Zope como un servidor de aplicaciones, con mucho énfasis en la gestión de contenidos, los portales y los servicios a medida destacando como una plataforma para el desarrollo rápido de aplicaciones ricas en contenido y funcionalidad.

Un detalle fundamental de Zope a la hora de ser considerado como plataforma de desarrollo es su licencia ZPL que es calificada por la FSF (http://www.fsf.org) como software libre, aunque incompatible con la GPL. esta licencia ha permitido que miles de desarrolladores puedan utilizar Zope sin ningún coste más allá de dar crédito a Digital Creations, en adelante DC, creadores de Zope. Zope dispone a su alrededor de una comunidad creciente de desarrolladores que están aumentando su funcionalidad con cientos de extensiones de la plataforma, extensiones conocidas como productos.

En este primer artículo vamos a presentar que hay detrás de Zope, su arquitectura, su instalación y un ejemplo de uso básico. Aún no te convertirás en un Zopista, pero te dejará en el camino.

. La arquitectura de Zope

A lo largo de la vida del desarrollo de aplicaciones en Internet se han ido cubriendo distintas fases. Cuando ni existía el protocolo CGI el web era básicamente un sistema de publicación de documentos estático con nula interacción por parte del usuario. Era la recepción de ficheros con información visualizada a través de HTML, eso sí, con la posibilidad de enlazar unas páginas con otras gracias a los enlaces.

Llegó entonces la era de los ejecutables CGI y se abrió un mundo de posibilidades inmenso. Independiente de la plataforma, el protocolo CGI permite la ejecución de programas pasándole parámetros desde el cliente web y enviando sus resultados a través del servidor de web al cliente que solicitó su ejecución. De esta forma y a través de los formularios HTML donde se capta la información a entregar al ejecutable CGI, las aplicaciones Internet comenzaron a tomar vida.

Poco a poco se han ido sofisticando los sistemas de ejecución a través CGI facilitando mucho la vida al desarrollador. Los lenguajes del lado del servidor, como PHP o ASP, permiten al desarrollador abstraerse de las incomodidades del protocolo CGI y el intercambio de datos, logrando que las aplicaciones basadas en el web sean más sencillas de desarrollar.

Un paso más en este camino hacia el desarrollo de aplicaciones web lo constituyen los servidores de aplicaciones, grupo al que pertenece Zope. Junto con el mecanismo básico de intercambio de datos con los clientes web, dotan al desarrollador de la parte servidor de la aplicación de unas infraestructuras que le facilitan el desarrollo de aplicaciones y reducen el tiempo de su construcción.

La arquitectura de Zope se basa en una serie de mecanismos de intercambio de datos con el servidor Zope y un conjunto de herramientas de apoyo a ese servidor Zope. Lo mejor es ver el esquema que constituye esta arquitectura que se presenta en el portal de Zope (http://www.zope.org/ZopeArchitecture).

La arquitectura de Zope

A lo largo del los artículos de la serie iremos detallando cada uno de los sistemas de Zope. De momento de este esquema vamos a destacar los distintos clientes de intercambio de información con y Zope (cliente Web, XML-RPC, WebDAV y FTP), la posibilidad que incluir un servidor de web como Apache comunicándolo a través de el protocolo CGI persistente, el núcleo de Zope, conocido también como el ORB Zope donde se gestionan las peticiones sobre objetos Zope y donde se interacciona con las clases de objetos Zope y los productos, la base de datos orientada a objetos de Zope y la posibilidad de interaccionar con otros tipos de bases de datos relaciones o sistema de ficheros.

. Todo son objetos

Una de las características fundamentales de Zope es que en su arquitectura todo lo que existe son objetos. Fue una decisión de diseño al intuir en el paradigma de objetos una potente forma de ver las partes de las aplicaciones web. Este tipo de decisiones de diseño son cada vez más comunes en los sistemas de programación actuales y es extraño ver nuevas arquitecturas de propósito general que hayan abrazado el modelo de objetos para sus sistemas.

Como consecuencia de esta decisión hubo que elegir un lenguaje con soporte de objetos. Además de esta característica el lenguaje a elegir debería estar presente en distintas arquitecturas (Windows, GNU/Linux etc.) y debería de facilitar el desarrollo de aplicaciones Internet, lo que básicamente requiere unas librerías de comunicaciones y soporte de HTTP/CGI potentes. De entre las alternativas existentes (Perl, Java, C, C++ ...) se eligió a Python, un lenguaje interpretado, presente en muchas plataformas, con mucha fuerza dentro de la comunidad de desarrolladores de aplicaciones Internet, que ya había mostrado su potencia en el mundo de los CGI y totalmente orientado a objetos (http://www.python.org).

Desde el momento en que como desarrolladores queramos extender las posibilidades de Zope será este el lenguaje a utilizar. Seguro que a muchos lectores este detalle les va a hacer plantearse el seguir con esta plataforma. Python es un lenguaje bastante nuevo y que aún tiene pocos conocedores del mismo. Pero cabe destacar que Python es un lenguaje sencillo para aquellos acostumbrados al mundo de los objetos, que al ser interpretado, facilita mucho los cambios en el código (no hay que recompilar) y que cada vez está más presente en el mundo del software libre, donde entornos como KDE y GNOME lo están eligiendo como el lenguaje para realizar sus "scripts". Esperamos haber logrado que el lector de una oportunidad a Python y si ya lo conocía, seguro que estará de acuerdo en las bondades de este excelente lenguaje de programación. Tan sólo tiene un pequeño punto negro en su licencia, que aún no es considerada compatible con la GPL, pero que se está trabajando en su resolución.

. ZOB: La base de datos de objetos

Como ya hemos comentado, todos los elementos de Zope son objetos. Y estos objetos se almacenan en una base de datos orientada a objetos. La potencia que proporciona este almacenamiento persistente de los objetos es enorme, sobre todo a la hora de modificar dinámicamente y buscar datos dentro de todos los objetos que forma el sitio web. Como veremos Zope dispone de un producto conocido como ZCatalog que permite realizar búsquedas en todos los objetos del servidor.

ZOB destaca por ser casi transparente para el programador y los objetos que deban de ser persistentes requieren unos cambios mínimos (heredar de una clase Python). Da soporte a las transacciones y ello permite que casi cualquier acción que realicemos en Zope podrá ser deshecha. Destaca también su alto rendimiento, que permite alcanzar un buen rendimiento incluso con bases de datos de giga-bytes.

. Zope ORB

Ya veremos en los ejemplos con los que cerraremos este artículo que los clientes cuando piden una URL al servidor Zope, lo que están haciendo en realidad es pedir al servidor Zope un objeto. En realidad se pide la ejecución de un objeto con una serie de parámetros. Si el lector es conocedor de CORBA este concepto le recordará a como se ejecutan métodos sobre objetos remotos a través de CORBA.

Cuando el servidor Zope recibe la petición para acceder a un objeto Zope, esta petición va a parar al ORB de Zope que se encarga de localizar al objeto y procesar la petición, mostrando los resultados de la misma. Este ORB es una parte crítica de la arquitectura ya que de su buen funcionamiento depende el rendimiento y la robustez de la plataforma.

. Obtención e instalación de Zope

. La licencia de Zope: ZPL

Debería ser el primer detalle en analizar a la hora de probar un producto nuevo. La licencia es que la que nos describe que podemos hacer y que no podemos hacer con el programa, que tipo de garantías recibimos del funcionamiento (ninguna normalmente), en cuantos puestos podemos utilizar el producto, bajo que condiciones etc.

Zope destaca por ser considerado software libre, tal y como podemos consultar en la descripción de licencias de la Free Software Foundation (http://www.fsf.org/philosophy/license-list.html). De ella dice la FSF que es incompatible con la GPL pero que no hay ningún problema por utilizar software con esta licencia, aunque se recomienda no utilizarla. La licencia (http://www.zope.com/Resources/ZPL) sigue la línea de la BSD, permitiendo el uso, distribución y modificación de Zope, aunque siempre cuidando de resaltar que DC son los creadores de Zope.

Así que puedes utilizar Zope sin ningún coste, puedes bajar su código fuente y modificarlo y puedes distribuirlo.

. Obtención de Zope

Para obtener zope lo mejor es acudir al portal de Zope (http://www.zope.org) y desde allí obtenerlo en código fuente. La versión actual (Septiembre 2000) es la 2.2.1 y lo único que se necesita para su ejecución es tener instalado Python en el sistema, una versión mayor que 1.5.2.

Desde la página http://www.zope.org/Products no sólo se puede bajar Zope se puede también acceder a la descarga de cientos de productos Zope que amplían la funcionalidad de la plataforma. Pero de momento lo más recomendable es bajar Zope y pasar a compilarlo e instalarlo.

. Instalación de Zope

Zope puede ser utilizado en diversas plataforma pero nosotros nos vamos a centrar en GNU/Linux y sobretodo, en Debian. Aunque hay que destacar que debido a la portabilidad los cambios son mínimos entre distintas arquitecturas por lo que lo que aquí comentemos va a valer prácticamente sin modificación para el caso concreto del lector.

Si estamos en una plataforma Debian lo tenemos muy fácil. Basta con ejecutar:

apt-get install zope

Con Debian hay que tener cuidado ya que lo normal es que el servidor Zope esté configurado para escuchar en el puerto 8080 mientras que en Debian el puerto es el 9673. En el caso de Red Hat la instalación consistirá en la descarga de los paquetes de Zope (http://starship.python.net/crew/jrush/Zope/) y su instalación con el comando rpm.

si nos hemos bajado las fuentes, después de desempaquetarlas nos metemos en el directorio con las fuentes de Zope y ejecutamos el comando ./install. Este se encargará de compilar algunas clases Python para una ejecución más veloz. En este mismo directorio tenemos los programas start y stop con los que arrancaremos Zope o lo pararemos.

. La primera incursión en Zope

Para terminar este primer artículo vamos a realizar nuestra primera entrada en Zope. Para ello necesitaremos haber instalado Zope y, haberlo iniciado. En Debian esto lo logramos ejecutando:

/etc/init.d/zope start

En Red Hat también es sencillo:

/etc/rc.d/init.d/zope start

En el caso de que te hayas bajado las fuentes es tan sencillo como desde dentro del directorio con las fuentes de Zope ejecutar ./start.

Ya tenemos a Zope corriendo. Ha llegado el momento de conectarnos al sistema para lo que necesitaremos alguno de los clientes que se mencionaban en la arquitectura. Sin duda vamos a comenzar con un cliente web, que todos tenemos a mano. El primer problema es saber en que puerto está escuchando Zope. En Red Hat probablemente será el 8080 y en Debian el 9673. Como nosotros estamos en Debian la URL a acceder para encontrarnos con Zope es:

http://localhost:9673

Si todo ha ido bien deberías de tener delante una página como la que se observa en la siguiente figura:

Página de inicio de Zope

Esta página es la misma que la que se observa si se accede a la URL http://localhost:9673/index_html. Aunque el lector tenga la sensación de que está accediendo a un fichero, no es cierto. A lo que se accede en realidad es a un objeto Zope cuyos contenidos se visualizan tal y como muestra la figura. Es importante que este concepto vaya calando en el lector ya que es básico para llegar e entender la arquitectura de Zope.

Para acceder a la gestión del sitio web, desde donde podremos controlar toda la arquitectura Zope y sus contenidos, debemos de acudir a la pantalla de gestión, a través de la URL:

http://localhost:9673/manage

Como no podía ser de otra forma esta página se encuentra protegida por contraseña. El primer usuario que se crea para acceder a la gestión de Zope, el superusuario del sistema, es aquél que esta guardado en el fichero "access" de Zope. En el caso de Debian este fichero se encuentra en "/var/lib/zope/access" y en el caso de instalarlo desde la fuentes el fichero está en el mismo directorio donde están las fuentes de Zope. Este usuario se crea en el caso de la instalación desde las fuentes cuando se compilan los módulos Python, y se nos informa de cual es el usuario y clave. Con el programa zpasswd.py podemos modificar este usuario. En el caso de Debian y como superusuario ejecutamos:

/usr/lib/zope/zpasswd.py -u root -p clave /var/lib/zope/access

Este usuario sólo debe usarse para crear nuevos usuarios y gestionar el sistema, no para crear nuevos contenidos. Zope dispone de un sistema de control de acceso muy avanzado, como ya veremos, y nos va a permitir un control muy preciso de la forma de acceder y modificar las distintas partes de un web Zope.

Si todo ha ido bien el lector tendrá delante la siguiente pantalla:

Página de gestión de Zope

Desde esta interfaz es desde donde se controla todos los sitios web que viven en este servidor Zope, desde donde se pueden crear y destruir usuario, construir webs a partir de productos, modificar el contenido de los documentos, reiniciar el servidor Zope, controlar la base de datos ... en fin, administrar todo el sistema. Como botón de muestra de lo que se puede hacer el lector puede pulsar sobre el objeto "index_html" y observar como se despliega una página desde la que puede modificar su contenido, tal y como se muestra en la siguiente figura:

Página de gestión de Zope

. Conclusiones

Ha llegado el momento de cerrar este primer artículo donde nos hemos acercado a Zope y a sus posibilidades. Hemos analizado la arquitectura de Zope a un nivel aún introductorio, viendo las facilidades que proporciona para desarrollar aplicaciones. Hemos visto de donde obtener Zope y como instalarlo. Para poder verlo en acción hemos arrancado el sistema Zope, algo muy sencillo, y hemos pasado a acceder a él, a su página principal por defecto, y a la página principal de gestión de Zope.

En futuros artículos de esta serie vamos a ir viendo con más detalle los distintos elementos de Zope, como se construye un sitio web, como se gestiona el acceso a los objetos Zope y nos centraremos en el desarrollo de aplicaciones basadas en Zope utilizando Python.

. Referencias

 
Patrocinados
 

Copyright © 1999-2006 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network