Utilizando Apache para servir nuestro contenido Zope.

Vamos a comentar una configuración de Zope sencilla y efectiva, utilizando Apache como servidor web.

La utilización de Apache como servidor web en lugar del servidor web proporcionado por el propio Zope (Medusa) se basa en razones de peso. Apache es un producto con muchos años de experiencia, muy testeado a todos los niveles, tanto en lo que respecta a rendimiento como seguridad. Apache nos proporciona utilidades muy necesarias como el soporte SSL o el VirtualHosting de páginas. Además, la ventaja principal es que desde nuestro servidor web vamos a poder servir todo tipo de contenido: desde las páginas estáticas de toda la vida, pasando por cgi's y scripts en php, y por supuesto, contenido de Zope.

Gracias al producto VirtualHostMonster, al servidor web Medusa de Zope, y a Apache, vamos a mapear las URLs de nuestro dominio www.pruebas.com hacia la carpeta pruebas de nuestro "root folder" de Zope. Un ejemplo de la configuración del Apache para conseguir esto sería la siguiente:

Ejemplo 1. Configuración de Apache con VirtualHostMonster

	  <IfModule mod_rewrite.c>
	  RewriteEngine On
	  RewriteLog "/var/log/apache/rewrite_log"
	  RewriteLogLevel 0
	  RewriteRule ^/(.*) http://127.0.0.1:8080/VirtualHostBase/http/www.pruebas.com:80/pruebas/VirtualHostRoot/$1 [L,P]
	  </IfModule>
	

La inclusión de estas líneas en la configuración de Apache hace que éste actue a modo de proxy con las peticiones a http://www.pruebas.com/*, pasando todas estas peticiones a nuestro servidor web medusa que estará escuchando en el interfaz de loopback local.

Para que esto funcione, además deberemos tener instalado el producto VirtualHostMonster dentro del "Root Folder" de nuestra instalación de Zope..

Una representación visual de esta configuración sería la siguiente:

Una vez tengamos funcionando nuestro servidor Zope a través de Apache, podemos plantearnos cómo extraer datos desde una base de datos relacional como por ejemplo MySQL a través de Zope. Nada más fácil, instalamos un producto Z MySQL Database Connection (recordemos que no viene en la distribución, sino que tenemos que bajarlo e instalarlo siguiendo las instrucciones), donde le diremos sobre qué base de datos vamos a hacer las consultas (una que ya exista en el sistema). Seguidamente, creamos los ZSQLMethods que realizarán las consultas. Dichos métodos pueden ser estáticos o dinámicos, en función de los parámetros que le pasemos al método. El resultado de una llamada a un ZSQLMethod será una lista

La puntilla final se pondría creando una zona privada a la que sólo tendrían acceso los usuarios autenticados en Zope a los que nosotros demos acceso. Para ello, creamos una carpeta "private", a la que en sus propiedades de seguridad le diremos que NO adquiera de los padres (Adquire permission settings) los permisos de "View" y "Access contents Information". Sólo daremos permiso a estas propiedades de la carpeta al usuario "Authenticated". Gracias a esto, logramos crear una zona privada en el sistema.

Los usuarios que se podrán conectar a esta zona los definiremos nosotros dentro de la carpeta creando un "UserFolder" y añadiéndole ahí nuestros usuarios.

Finalmente, podemos mejorar nuestro método de autenticación de usuario pasando de la autenticación básica que lleva por defecto Zope, hacia una autenticación por formulario, añadiendo un producto CookieCrumbler en la carpeta justo anterior a nuestra zona privada.