Cómo instalar varias instancias de un servidor Zope
Este documento explica cómo instalar varias instancias de un servidor Zope,en una máquina linux. Se parte de una instalación básica en un directorio único y después se crean varias instancias independientes en un nuevo directorio cada una. Para ello se copian ciertos datos del directorio único a cada nuevo directorio.
Es útil crear un nuevo usuario (por ejemplo "usuariozope") y realizar toda la instalación de Zope con este usuario, y siempre en su directorio "home". Para ello, es necesario tener privilegios de root. Después utilizamos el comando:
$adduser usuariozope
a continuación hacemos login como "usuariozope":
$su usuariozope
y procedemos con la instalación de los archivos necesarios.
En primer lugar, se deben descargar los archivos de Zope de la página www.zope.org. Existen distintas versiones de zope disponibles en Internet, para esta demostración se ha utilizado la versión estable y se han empleado los archivos binarios para realizar la instalación.
Los archivos binarios de la versión actualmente estable (diciembre 2003) están comprimidos en el archivo Zope-2.6.2-linux2-x86.tgz y están disponibles en la url http://zope.org/Products/Zope/2.6.2/Zope-2.6.2-linux2-x86.tgz.
Una vez que el archivo Zope-2.6.2-linux2-x86.tgz, se encuentra en en la máquina servidora hay que descomprimirlo. Para ello hay que situarse en el directorio donde se encuentre el archivo, por ejemplo /home/usuariozope/ y ejecutar :
$tar -xzvf Zope-2.6.2-linux2-x86.tgz
Esto descomprime todos los archivos de instalación del servidor en un directorio llamado Zope-2.5.1-linux2-x86 que será renombrado a 2.5.1.
$mv Zope-2.6.2-linux2-x86.tgz 2.6.2
Después de situarse en este nuevo directorio introduciendo:
$cd 2.6.2
y luego hay que ejecutar:
$./install
Ahora ya existe una instalación básica en el directorio /home/usuariozope/2.6.2 y se pueden crear distintas instancias. Para crearlas se crea un subdirectorio por cada instancia deseada. Por ejemplo se puede crear el directorio hosts
introduciendo:
$mkdir /home/usuariozope/hosts
y dentro de él los directorios uno, dos, etc ... para la primera, segunda, etc... instancia.
Cada instancia, dentro de su directorio debe contar, al menos con varios subdirectorios, estos, se crearán de la siguiente forma:
$cd/home/usuariozope/hosts
$mkdir uno
$cd/home/usuariozope/hosts/uno
$mkdir var
$mkdir Extensions
$mkdir import
$mkdir Products
Cada directorio llevará información de distinta naturaleza.
El directorio var contendrá los datos que gestiona el servidor así como ciertos logs, etc...
Este directorio debe contener una copia del contenido del directorio homónimo en la instalación básica. Esto se consigue así:
$cp -rf /home/usuariozope/2.6.2/var/* /home/usuariozope/hosts/ uno/var
En el directorio Extensions irán scripts externos a zope, escritos en Perl, Python, etc...
En el directorio import se copiarán los ficheros que contengan datos exportados por Zope y que vayan a ser importados por esta instancia. Los archivos de importación/exportación terminan en .zexp.
En el directorio Products van a encontrarse aquellos productos disponibles para Zope, que esta instancia tendrá instalados.
En el directorio raiz de la instancia /home/usuariozope/hosts/uno/ se deben copiar los archivos de arranque y parada del servidor que vienen en la instalación básica:
$cp /home/usuariozope/2.6.2/start /home/usuariozope/hosts/uno
$cp /home/usuariozope/2.6.2/stop /home/usuariozope/hosts/uno
A continuación hay que editar estos ficheros para que arranquen o paren el proceso adecuado.
El contenido del fichero start debe ser el siguiente:
¡OJO!: las comillas están inclinadas...
#!/bin/sh
umask 077
reldir=`dirname $0`
cwd=`cd $reldir; pwd`
INSTANCE_HOME=`cd $reldir; pwd`
export INSTANCE_HOME
# Zope's event logger is controlled by the "EVENT_LOG_FILE" environment
# variable. If you don't have a "EVENT_LOG_FILE" environment variable
# (or its older alias "STUPID_LOG_FILE") set, Zope will log to the standard
# output. For more information on EVENT_LOG_FILE, see doc/ENVIRONMENT.txt.
ZLOGFILE=$EVENT_LOG_FILE
if [ -z "$ZLOGFILE" ]; then
ZLOGFILE=$STUPID_LOG_FILE
fi
if [ -z "$ZLOGFILE" ]; then
EVENT_LOG_FILE=""
export EVENT_LOG_FILE
fi
exec /home/usuariozope/2.6.2/bin/python /home/usuariozope/2.6.2/z2.py -D -P 9000 -L "" "$@"
Zope utiliza una variable de entorno llamada INSTANCE_HOME para saber cual es el directorio base de una instancia.
El archivo también ejecuta el script de arranque z2.py. Este script tiene muchos parámetros que se encuentran documentados en el mísmo código fuente.
El valor 9000 en el parámetro -P indica que el servidor Zope, estará a la escucha del puerto 9080 y que se instalará un servidor ftp, de uso particular para Zope, en el puerto 9021.
Por defecto, este parámetro vale 8000, y los puertos de escucha se calculan siempre sumando 80 y 21 respectivamente al valor de dicho parámetro.
El parámetro -L, indica la lengua que se utilizará en el servidor, por ejemplo es_ES.
Si no se indica, Zope tomará el valor predeterminado de la instalación linux.
El contenido del fichero stop debe ser el siguiente:
#! /bin/sh
kill `cat /home/usuariozope/hosts/uno/var/Z2.pid`
Cuando se crean los procesos del servidor, el sistema operativo les otorga un número de proceso, llamado pid. Estos se almacena en el fichero /home/usuariozope/hosts/uno/var/Z2.pid. El script stop, necesita esta información para acabar con el proceso correspondiente a la instancia concreta.
También hay que copiar un archivo que contiene un script de Python llamado zpasswd.py al directorio raiz de la instancia.
$cp /home/usuariozope/2.6.2/zpasswd.py /home/usuariozope/hosts/uno
Ya solo queda crear un usuario de emergencia. Utilizando este último script, se crea el usuario de nombre "usuario" y de password "emergencia".
$ Python zpasswd.py -u usuario -p emergencia access
Esto crea un archivo llamado "access" donde se guardan los datos del usuario de emergencia con el que solo se podrán crear otros usuarios. Recuerda borrar este archivo "access" después de crear un usuario "manager".
$adduser usuariozope
a continuación hacemos login como "usuariozope":
$su usuariozope
y procedemos con la instalación de los archivos necesarios.
En primer lugar, se deben descargar los archivos de Zope de la página www.zope.org. Existen distintas versiones de zope disponibles en Internet, para esta demostración se ha utilizado la versión estable y se han empleado los archivos binarios para realizar la instalación.
Los archivos binarios de la versión actualmente estable (diciembre 2003) están comprimidos en el archivo Zope-2.6.2-linux2-x86.tgz y están disponibles en la url http://zope.org/Products/Zope/2.6.2/Zope-2.6.2-linux2-x86.tgz.
Una vez que el archivo Zope-2.6.2-linux2-x86.tgz, se encuentra en en la máquina servidora hay que descomprimirlo. Para ello hay que situarse en el directorio donde se encuentre el archivo, por ejemplo /home/usuariozope/ y ejecutar :
$tar -xzvf Zope-2.6.2-linux2-x86.tgz
Esto descomprime todos los archivos de instalación del servidor en un directorio llamado Zope-2.5.1-linux2-x86 que será renombrado a 2.5.1.
$mv Zope-2.6.2-linux2-x86.tgz 2.6.2
Después de situarse en este nuevo directorio introduciendo:
$cd 2.6.2
y luego hay que ejecutar:
$./install
Ahora ya existe una instalación básica en el directorio /home/usuariozope/2.6.2 y se pueden crear distintas instancias. Para crearlas se crea un subdirectorio por cada instancia deseada. Por ejemplo se puede crear el directorio hosts
introduciendo:
$mkdir /home/usuariozope/hosts
y dentro de él los directorios uno, dos, etc ... para la primera, segunda, etc... instancia.
Cada instancia, dentro de su directorio debe contar, al menos con varios subdirectorios, estos, se crearán de la siguiente forma:
$cd/home/usuariozope/hosts
$mkdir uno
$cd/home/usuariozope/hosts/uno
$mkdir var
$mkdir Extensions
$mkdir import
$mkdir Products
Cada directorio llevará información de distinta naturaleza.
El directorio var contendrá los datos que gestiona el servidor así como ciertos logs, etc...
Este directorio debe contener una copia del contenido del directorio homónimo en la instalación básica. Esto se consigue así:
$cp -rf /home/usuariozope/2.6.2/var/* /home/usuariozope/hosts/ uno/var
En el directorio Extensions irán scripts externos a zope, escritos en Perl, Python, etc...
En el directorio import se copiarán los ficheros que contengan datos exportados por Zope y que vayan a ser importados por esta instancia. Los archivos de importación/exportación terminan en .zexp.
En el directorio Products van a encontrarse aquellos productos disponibles para Zope, que esta instancia tendrá instalados.
En el directorio raiz de la instancia /home/usuariozope/hosts/uno/ se deben copiar los archivos de arranque y parada del servidor que vienen en la instalación básica:
$cp /home/usuariozope/2.6.2/start /home/usuariozope/hosts/uno
$cp /home/usuariozope/2.6.2/stop /home/usuariozope/hosts/uno
A continuación hay que editar estos ficheros para que arranquen o paren el proceso adecuado.
El contenido del fichero start debe ser el siguiente:
¡OJO!: las comillas están inclinadas...
#!/bin/sh
umask 077
reldir=`dirname $0`
cwd=`cd $reldir; pwd`
INSTANCE_HOME=`cd $reldir; pwd`
export INSTANCE_HOME
# Zope's event logger is controlled by the "EVENT_LOG_FILE" environment
# variable. If you don't have a "EVENT_LOG_FILE" environment variable
# (or its older alias "STUPID_LOG_FILE") set, Zope will log to the standard
# output. For more information on EVENT_LOG_FILE, see doc/ENVIRONMENT.txt.
ZLOGFILE=$EVENT_LOG_FILE
if [ -z "$ZLOGFILE" ]; then
ZLOGFILE=$STUPID_LOG_FILE
fi
if [ -z "$ZLOGFILE" ]; then
EVENT_LOG_FILE=""
export EVENT_LOG_FILE
fi
exec /home/usuariozope/2.6.2/bin/python /home/usuariozope/2.6.2/z2.py -D -P 9000 -L "" "$@"
Zope utiliza una variable de entorno llamada INSTANCE_HOME para saber cual es el directorio base de una instancia.
El archivo también ejecuta el script de arranque z2.py. Este script tiene muchos parámetros que se encuentran documentados en el mísmo código fuente.
El valor 9000 en el parámetro -P indica que el servidor Zope, estará a la escucha del puerto 9080 y que se instalará un servidor ftp, de uso particular para Zope, en el puerto 9021.
Por defecto, este parámetro vale 8000, y los puertos de escucha se calculan siempre sumando 80 y 21 respectivamente al valor de dicho parámetro.
El parámetro -L, indica la lengua que se utilizará en el servidor, por ejemplo es_ES.
Si no se indica, Zope tomará el valor predeterminado de la instalación linux.
El contenido del fichero stop debe ser el siguiente:
#! /bin/sh
kill `cat /home/usuariozope/hosts/uno/var/Z2.pid`
Cuando se crean los procesos del servidor, el sistema operativo les otorga un número de proceso, llamado pid. Estos se almacena en el fichero /home/usuariozope/hosts/uno/var/Z2.pid. El script stop, necesita esta información para acabar con el proceso correspondiente a la instancia concreta.
También hay que copiar un archivo que contiene un script de Python llamado zpasswd.py al directorio raiz de la instancia.
$cp /home/usuariozope/2.6.2/zpasswd.py /home/usuariozope/hosts/uno
Ya solo queda crear un usuario de emergencia. Utilizando este último script, se crea el usuario de nombre "usuario" y de password "emergencia".
$ Python zpasswd.py -u usuario -p emergencia access
Esto crea un archivo llamado "access" donde se guardan los datos del usuario de emergencia con el que solo se podrán crear otros usuarios. Recuerda borrar este archivo "access" después de crear un usuario "manager".