Zope: El servidor de aplicaciones libre

Zope, una palabra que ya el lector posiblemente haya escuchado en alguna ocasin. Quizs incluso sepa que es una herramienta y que sirve para construir sitios web. Pero pocas veces se llega ms alla en ese conocimiento, hasta ahora un tanto limitado, de lo que hay detrs de esta palabra.

Y hay mucho ms. Zope es una arquitectura muy completa y por momentos compleja. Sin duda se la podra agrupar dentro de la vaga categora de servidores de aplicaciones, es decir, productos que facilitan el desarrollo y ejecucin de servidores de informacin en una red, normalmente Internet.

Intentando ir un poco ms alla en esta vaga definicin Zope son las iniciales de "Z Object Publishing Enviroment", un entorno para publicar objetos. Y es que sus orgenes parten de un diseo con el modelo de negocio de un peridico 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 tambin definir Zope, algo que incluso sus creadores lo encuentran difcil. En concreto ellos ven a Zope como un servidor de aplicaciones, con mucho nfasis en la gestin de contenidos, los portales y los servicios a medida destacando como una plataforma para el desarrollo rpido 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 ningn coste ms all de dar crdito a Digital Creations, en adelante DC, creadores de Zope. Zope dispone a su alrededor de una comunidad creciente de desarrolladores que estn aumentando su funcionalidad con cientos de extensiones de la plataforma, extensiones conocidas como productos.

En este primer artculo vamos a presentar que hay detrs de Zope, su arquitectura, su instalacin y un ejemplo de uso bsico. An no te convertirs 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 exista el protocolo CGI el web era bsicamente un sistema de publicacin de documentos esttico con nula interaccin por parte del usuario. Era la recepcin de ficheros con informacin visualizada a travs de HTML, eso s, con la posibilidad de enlazar unas pginas 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 ejecucin de programas pasndole parmetros desde el cliente web y enviando sus resultados a travs del servidor de web al cliente que solicit su ejecucin. De esta forma y a travs de los formularios HTML donde se capta la informacin a entregar al ejecutable CGI, las aplicaciones Internet comenzaron a tomar vida.

Poco a poco se han ido sofisticando los sistemas de ejecucin a travs 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 ms sencillas de desarrollar.

Un paso ms en este camino hacia el desarrollo de aplicaciones web lo constituyen los servidores de aplicaciones, grupo al que pertenece Zope. Junto con el mecanismo bsico de intercambio de datos con los clientes web, dotan al desarrollador de la parte servidor de la aplicacin de unas infraestructuras que le facilitan el desarrollo de aplicaciones y reducen el tiempo de su construccin.

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 artculos 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 informacin con y Zope (cliente Web, XML-RPC, WebDAV y FTP), la posibilidad que incluir un servidor de web como Apache comunicndolo a travs de el protocolo CGI persistente, el ncleo de Zope, conocido tambin 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 caractersticas fundamentales de Zope es que en su arquitectura todo lo que existe son objetos. Fue una decisin de diseo al intuir en el paradigma de objetos una potente forma de ver las partes de las aplicaciones web. Este tipo de decisiones de diseo son cada vez ms comunes en los sistemas de programacin actuales y es extrao ver nuevas arquitecturas de propsito general que hayan abrazado el modelo de objetos para sus sistemas.

Como consecuencia de esta decisin hubo que elegir un lenguaje con soporte de objetos. Adems de esta caracterstica el lenguaje a elegir debera estar presente en distintas arquitecturas (Windows, GNU/Linux etc.) y debera de facilitar el desarrollo de aplicaciones Internet, lo que bsicamente requiere unas libreras 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 haba 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 an 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 cdigo (no hay que recompilar) y que cada vez est ms presente en el mundo del software libre, donde entornos como KDE y GNOME lo estn eligiendo como el lenguaje para realizar sus "scripts". Esperamos haber logrado que el lector de una oportunidad a Python y si ya lo conoca, seguro que estar de acuerdo en las bondades de este excelente lenguaje de programacin. Tan slo tiene un pequeo punto negro en su licencia, que an no es considerada compatible con la GPL, pero que se est trabajando en su resolucin.

.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 dinmicamente 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 bsquedas 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 mnimos (heredar de una clase Python). Da soporte a las transacciones y ello permite que casi cualquier accin que realicemos en Zope podr ser deshecha. Destaca tambin 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 artculo que los clientes cuando piden una URL al servidor Zope, lo que estn haciendo en realidad es pedir al servidor Zope un objeto. En realidad se pide la ejecucin de un objeto con una serie de parmetros. Si el lector es conocedor de CORBA este concepto le recordar a como se ejecutan mtodos sobre objetos remotos a travs de CORBA.

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

.Obtencin e instalacin de Zope

.La licencia de Zope: ZPL

Debera 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 garantas 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 descripcin 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 ningn problema por utilizar software con esta licencia, aunque se recomienda no utilizarla. La licencia (http://www.zope.com/Resources/ZPL) sigue la lnea de la BSD, permitiendo el uso, distribucin y modificacin de Zope, aunque siempre cuidando de resaltar que DC son los creadores de Zope.

As que puedes utilizar Zope sin ningn coste, puedes bajar su cdigo fuente y modificarlo y puedes distribuirlo.

.Obtencin de Zope

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

Desde la pgina http://www.zope.org/Products no slo se puede bajar Zope se puede tambin acceder a la descarga de cientos de productos Zope que amplan la funcionalidad de la plataforma. Pero de momento lo ms recomendable es bajar Zope y pasar a compilarlo e instalarlo.

.Instalacin 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 mnimos entre distintas arquitecturas por lo que lo que aqu comentemos va a valer prcticamente sin modificacin para el caso concreto del lector.

Si estamos en una plataforma Debian lo tenemos muy fcil. 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 instalacin consistir en la descarga de los paquetes de Zope (http://starship.python.net/crew/jrush/Zope/) y su instalacin con el comando rpm.

si nos hemos bajado las fuentes, despus 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 ejecucin ms veloz. En este mismo directorio tenemos los programas start y stop con los que arrancaremos Zope o lo pararemos.

.La primera incursin en Zope

Para terminar este primer artculo 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 tambin 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 deberas de tener delante una pgina como la que se observa en la siguiente figura:

Pgina de inicio de Zope

Esta pgina es la misma que la que se observa si se accede a la URL http://localhost:9673/index_html. Aunque el lector tenga la sensacin 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 bsico para llegar e entender la arquitectura de Zope.

Para acceder a la gestin del sitio web, desde donde podremos controlar toda la arquitectura Zope y sus contenidos, debemos de acudir a la pantalla de gestin, a travs de la URL:

http://localhost:9673/manage

Como no poda ser de otra forma esta pgina se encuentra protegida por contrasea. El primer usuario que se crea para acceder a la gestin de Zope, el superusuario del sistema, es aqul 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 estn las fuentes de Zope. Este usuario se crea en el caso de la instalacin desde las fuentes cuando se compilan los mdulos 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 slo 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:

Pgina de gestin 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 botn de muestra de lo que se puede hacer el lector puede pulsar sobre el objeto "index_html" y observar como se despliega una pgina desde la que puede modificar su contenido, tal y como se muestra en la siguiente figura:

Pgina de gestin de Zope

.Conclusiones

Ha llegado el momento de cerrar este primer artculo donde nos hemos acercado a Zope y a sus posibilidades. Hemos analizado la arquitectura de Zope a un nivel an introductorio, viendo las facilidades que proporciona para desarrollar aplicaciones. Hemos visto de donde obtener Zope y como instalarlo. Para poder verlo en accin hemos arrancado el sistema Zope, algo muy sencillo, y hemos pasado a acceder a l, a su pgina principal por defecto, y a la pgina principal de gestin de Zope.

En futuros artculos de esta serie vamos a ir viendo con ms 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

ENVIAR A UN AMIGO
COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN GOOGLE +
SIGUIENTE ARTÍCULO

HAY 2 COMENTARIOS
  • Anónimo dijo:

    quisier que me ayuden estoy haciendo una monografia hacerca de zope, y quiero que me digan como puedo publicar mi pagia, ya lo tengo terminado, pero no puedo publicar, mi tutor quiere revisar mi pagina desde su domicilio, por favor si alguien me puede hayudar estare muy agradecido gracias, mi correo es [email protected]

  • Anónimo dijo:

    señor Miguel Serrano esta bueno su aporte, pero quiciera que me ayude, sobre como publicar la pagina web, ya que mi direstor de tesis lo quiere revisar desde el internet, por favor ayudeme

Conéctate o Regístrate para dejar tu comentario.