Uso de múltiples instancias y versiones de Plone
Note: This is the print view with all the tutorial pages on one page. The paginated version is available here, if you prefer that.
Introducción
Uno de los aspectos más complicados (y debatidos) de mantener un sitio Plone, es el manejo de las actualizaciones (upgrade) de versiones.
Muchas veces la cadena de requerimientos Plone -> Zope -> Python hace que una nueva versión de Plone requiera mucho más trabajo del aparente. Cada uno de estos software puede necesitar de una versión en específico del anterior.
En mi trabajo normal muchas veces debo congelar un Plone mientras está en producción. Eso no impide que en el mismo servidor se pueda jugar y probar con nuevos Plone. Lo único que hay que tener cuidado es en usar "paths" distintos para cada instalación, y que cada uno de ellos use un puerto distinto.
Además -y mucho más importante-, una actualización de un servidor en producción necesita que por un instante viva más de una versión de Plone:
- se instala una versión nueva y aislada del nuevo Plone
- se migra el contenido
- se inicia esta nueva versión en un puerto distinto
- se prueba que todo funcione
- se cambia el puerto de esta nueva versión para usar el default del sitio
- se puede bajar y eliminar la instalación Plone antigua
En este tutorial asumimos que ya tenemos una instalación de Plone funcionando, con una versión antigua.
Escoger un lugar de instalación
Escogemos un lugar adecuado para mantener nuestra nueva instalación. Sobre el espacio, al menos yo estoy usando 360 MB para el software, y la instancia Plone depende del contenido que tenga. En mi caso particular usaré la partición "/web":
% mkdir -p /web/nuevo-plone
Y como preparación del siguiente paso, mantendré las fuentes de los programas en su directorio especial:
% mkdir /web/nuevo-plone/src
Además debemos tener en cuenta el usuario que ejecutará Zope. Este usuario debe ser el dueño de este directorio, y tener los permisos suficientes para abrir el puerto que escogeremos.
Desde ahora en adelante todos los comandos los ejecutará este usuario.
Obtener las versiones adecuadas
- plone 2.5.2-1, obtenido desde plone.org
- zope 2.9.6, obtenido desde zope.org
- python 2.4.4, obtenido desde python.org
- librería de imágenes para python (PIL), versión 1.1.6, desde http://www.pythonware.com/products/pil/
Dejamos todas estas fuentes en /web/nuevo-plone/src
Ahora la pregunta es: ¿cómo sabemos qué versiones usar?
Creo que hay tres respuestas posibles:
- la más correcta creo que es "mirar los requerimientos de cada software". Es decir, partimos siempre con la última versión de Plone, leemos sus requisitos y así sabemos qué Zope usar, bajamos esa versión de Zope y leemos qué Python usar.
Sin embargo, este proceso puede ser un poco tedioso y tampoco podemos estar seguro que funcione! - leer en los foros de plone.org la experiencia de algún usuario, para tener la certeza de una "cadena de versiones" que funcione
- la que yo uso... que es aprovechar el trabajo que alguien ya hizo antes ;)
En mi computador personal tengo instalado Fedora, y gracias al repositorio "extras" (y al trabajo de los mantenedores) basta con hacer "yum upgrade plone" y luego revisar las versiones de cada paquete instalado.
Instalar python y librería PIL
Descomprimir el paquete:
% cd /web/nuevo-plone/src
% tar xjvf Python-2.4.4.tar.bz2
% cd Python-2.4.4
Configurar usando un path especial:
% ./configure --prefix=/web/nuevo-plone/p2.4.4
Compilar e instalar:
% make
% make install
Ahora instalamos la librería de imágenes para python:
% cd ..
% tar xzvj Imaging-1.1.6.tar.gz
% cd Imaging-1.1.6
En el caso de mi servidor tengo que setear a mano la ubicación de la librería libjpeg. Para eso hay que editar "setup.py" y en la línea JPEG_ROOT indicar el path adecuado.
Finalmente, instalar:
% /web/nuevo-plone/p2.4.4/bin/python setup.py install
Instalar Zope
Descomprimimos:
% cd /web/nuevo-plone/src
% tar xzvf Zope-2.9.6-final.tgz
% cd Zope-2.9.6-final
Configuramos usando los paths en particular:
% ./configure --with-python=/web/nuevo-plone/p2.4.4/bin/python --prefix=/web/nuevo-plone/z2.9.6
Compilamos e instalamos:
% make
% make install
Crear instancia de Zope
Instalamos nueva instancia:
% /web/nuevo-plone/z2.9.6/bin/mkzopeinstance.py
Este comando interactivo nos preguntará la ubicación de la instancia. Yo escogí:
/web/nuevo-plone/plone
Además nos consulta por el nombre de usuario y contraseña del administrador de esta instancia Zope.
Instalar Plone
% cd /web/nuevo-plone/plone/Products
% tar xzvf /web/nuevo-plone/src/Plone-2.5.2-1.tar.gz
% mv Plone-2.5.2-1/* .
% rmdir Plone-2.5.2-1
Configuraciones finales
Al menos es necesario revisar 2 configuraciones de zope:
% vi /web/nuevo-plone/plone/etc/zope.conf
- cambiar el puerto por el que escuchará esta nueva instancia, que debe ser distinto al de todas las otras instancias plone. En la línea que dice "address", sección "http-server".
- cambiar el usuario dueño del servidor, en la línea que dice "effective-user"
Iniciar y probar
La primera vez es mejor iniciar en modo verboso, para verirficar los mensajes de error:
% /web/nuevo-plone/plone/bin/zopectl fg
Luego de todos los mensajes debe estar la línea "INFO Zope Ready to handle requests".
Ahora ya es posible usar el browser y probar nuestra nueva instalación.