Zope: El servidor de aplicaciones libre

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

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP