Instalación¶
Para instalar el producto cenditel.multimedia usted necesita solventar las siguientes dependencias en su instancia Plone/Zope
- Un sitio Plone 3.3.5 configurado con el producto File System Storage usando la estrategia de almacenamiento «site2».
- Un servidor web nginx, con una configuración especifica en mimetypes, que permitirá el streaming a partir de este.
A continuación veremos los pasos necesarios para replicar el ambiente de desarrollo:
Primer Paso¶
Descargar de la pagina Web del Proyecto el script de instalación buildout que le permitirá configurar un sitio demostrativo.
Para realizar la descarga proceda en un terminal con los siguientes comandos:
$ mkdir buildouts
$ cd buildouts
$ svn co http://plataforma.cenditel.gob.ve/svn/plataforma
/proyectosInstitucionales/renasen/cenditel.multimedia/buildout/plone/3.3/ cenditelmultimedia
$ cd cenditelmultimedia
$ ls -p
00-varibles.cfg 06-contenttypes.cfg plonesite.cfg
01-dumpedversions.cfg bootstrap.py products/
02-mrdeveloper.cfg buildout.cfg src/
03-prerequemients.cfg cenditelmultimedia.cfg templates/
04-mountpoint.cfg dumped-versions.cfg versions.cfg
05-mediafilesstorage.cfg etc/
El primer comando es el encargado de crear un directorio para nuestros proyectos buildout, el segundo comando abre dicho directorio pero la magia realmente se encuentra en el tercero, el cual es el encargado de descargar del repositorio subversion los scripts listados por el cuarto comando.
Para saber un poco más acerca de scripts listados, serán explicados a continuación.
bootstrap.py¶
Es un script python, encargado de realizar la descarga y construcción de un ambiente de desarrollo buildout para sitios Web basados en Zope/Plone
buildout.cfg¶
Archivo de configuración que posee las características necesarias para la construcción de un sitio Web basado básico en el sistema administración de contenidos Plone.
00-varibles.cfg¶
Como su nombre lo indica, contiene las variables a ser utilizadas por el sistema de instalación buildout para la reconstrucción del sitio de pruebas.
Se divide en cuatro partes:
- buildout: Posee la definición de las variables de extensión del producto al
momento de ser ejecutado el script, es decir indica el orden de ejecución, para eso usa la variable
extends=
, además declara la variablesite-id
con un nombre de sitio que va a ser usado más adelante.
- zopeserver: Contiene configuraciones referentes al servidor de aplicaciones Zope.
- La primera variable de esta parte es la variable
user
que indica el - nombre de usuario y contraseña del usuario
admin
del servidor con las configuraciones por defecto.
- La primera variable de esta parte es la variable
- La segunda variable
effective-user
corresponde al usuario Unix del servidor. - La tercera variable
host
es una variable correspondiente a la dirección IP - del servidor Web.
- La tercera variable
- La cuarta variable
debug-mode
indica si el servidor se encuentra en - modo de depuración, por defecto se encuentra en off.
- La cuarta variable
- La quinta variable,
verbose-security
indica si se presentan informes - detallados de la seguridad, por defecto se encuentra en off.
- La quinta variable,
hosts: Contiene las distintas variables de conexión al servidor de producción.
- Variable
http-address
, corresponde a la dirección del Servidor Web Zope. - Variable
ftp-address
, corresponde a la dirección del Servidor FTP de Zope. - Variable
webdav-address
, corresponde a la dirección del Servidor WebDav de Zope - Variable
dns
, nombre del dominio producción o la dirección IP - Variable
user
, corresponde al usuario de servicios ssh que se conectara al Hosting del servidor. - Variable
password
, corresponde a la contraseña del servicio ssh para - conectarse al Hosting del servidor.
- Variable
- Variable
ports: Contiene las variable de los distintos puertos para los diferentes servicios.
- Variable
http-address
, contiene el puerto de entrada a la aplicación http. - Variable
ftp-address
, contiene el puerto de entrada a la aplicación mediante ftp. - Variable
webdav-address
, contiene el puerto de entrada a la aplicación mediante servicios Webdav.
- Variable
01-dumpedversions.cfg¶
Contiene el receta buildout.dumppickedversions el cual crea al archivo dumped-versions.cfg que contiene la lista de productos instalados y sus respectivas versiones. Se actualiza cada vez que se ejecuta buildout.
02-mrdeveloper.cfg¶
Consta de la sección buildout
y la sección sources
, en la primera es declarada la
variable extends
que permite la extensión de las configuraciones a partir del
archivo 01-dumpedversions.cfg. Por otro lado agrega la extensión para buildout
mr.developer
El récipe mr.developer admite las siguientes variables de configuración:
- sources-dir: Indica el directorio donde serán descargados
los distintos productos, por defecto es
src
. - sources: Indica el nombre de la sección donde serán indicados los paquetes a descargar.
- always-check: Especifica el nombre de los archivos a los cuales siempre que buildout se ejecute se le realizará check out.
- auto-checkout: Especifica el nombre de los archivos a los cuales siempre que buildout se ejecute se le realizará check out.
Por otro lado, la sección sources
se encuentra vacía porque aún no
es necesaria su utilización.
03-prerequemients.cfg¶
Este Script cuenta de las siguientes partes: pre-requemients, make-fss-directory, vhost-nginx, mime-types-nginx, config-nginx.
- pre-requemients: Usa el recipe plone.recipe.command
el cual es utilizado para lanzar el comando de instalación necesario para instalar nginx y ffmpeg, mediante la variable
command
.
- make-fss-directory: Usa el recipe plone.recipe.command , con el cual se crean
los directorios necesarios para el producto File System Storage y para la creación de archivos de configuración del servidor nginx. Además de los comandos lanzados con
command
utiliza las siguientes variables:- update-command: Esta variable, es utilizada cuando buildout es ejecutado
- pero la parte no ha sido alterada.
- stop-on-error: Cuando el valor es yes, no o true. Buildout detiene su ejecución
- si un comando recibe un valor de salida cero.
- vhost-nginx: Usa el recipe collective.recipe.template,
mediante este, se crea una template de ejemplo que va a ser utilizada por el servidor nginx para realizar el servicio de streaming.
- mime-types-nginx: Usa el recipe collective.recipe.template
para crear un archivo de configuración de mimetypes para el servidor web nginx.
- config-nginx: Usa el recipe plone.recipe.command
y con los comandos, crea enlaces simbólicos, verifica la configuración del servidor web nginx y además recarga la configuración.
- update-command: Esta variable, es utilizada cuando buildout es ejecutado pero
la parte no ha sido alterada.
- stop-on-error: Cuando el valor es yes, no o true. Buildout detiene su ejecución
si un comando recibe un valor de salida cero.
04-mountpoint.cfg¶
Este archivo de configuración, crea punto de montaje en la para un sitio web basado en Plone de manera tal, que se permitan Bases de Datos separadas para cada sitio Plone. Para mayor información puede visitar Multiple Plone sites per zope instance – using separate Data.fs files for each one.
05-mediafilestorage.cfg¶
Este script tiene las configuraciones necesarias para el manejo de los archivos de audio y vídeo, a nivel del disco duro. Consta de cuatro secciones:
buildout: Se declara la variable extends, y se indica que este script continua con las configuraciones a partir del archivo 04-mountpoint.cfg. Y se declara la adición de la parte fss.
instance: agrega eggs python necesarios para la configuración del servidor Zope de manera que este use el sistema de archivos.
fss: Utiliza el recipe iw.recipe.ffs, el récipe consta de las siguientes variables:
zope-instances: Por defecto tiene asignado el valor
${instance:location}
storage: En esta variable se indica los lugares donde serán colocados los distintos archivos, consiste en tres configuraciones:
global: Explica el tipo de almacenamiento global para todos los sitios.
Almacenamiento específico para cada sitio: Después de la linea global se pueden declarar estrategias de almacenamiento específicas para cada sitio.
Para ello se sigue la sintaxis:
plone_flat /sitename site2 path/to/storage
donde:
plone_flat
, es un alias para la configuración;sitename
, es el nombre de un sitio que se encuentra en el root de la ZMI;site2
: es la configuración de almacenamiento para el sitio;path/to/storage
: Es el sitio en el disco duro dondeiw.fss
colocará los archivos que vienen de la ZODB.
versions: Especifica versiones especificas que son necesarias para la instalación del sistema.
06-contenttypes.cfg¶
Extiende del archivo de configuración 05-mediafilestorage.cfg, además en este archivo
es declarada una parte llamada contenttypes-conf
que utiliza el recipe plone.recipe.atcontenttypes
en esta configuración la variable max-file-size
especifica el tamaño máximo
que los tipos de contenido pueden tener dentro de los sitios Plone, la variable
max-image-dimension
específica la resolución máxima en pixeles, para las
imágenes de los contenidos de noticias y para las imágenes. Por ultimo, la variable
pil-quality
señala, la calidad con que serán guardadas las imágenes.
cenditelmultimedia.cfg¶
Extiende del archivo de configuración 06-contenttypes.cfg, posee las siguientes variables:
- auto-checkout: Declara los eggs a los cuales el recipe mr.developer mencionado previamente realizará un check out.
- eggs: Indica al script buildout cuales paquetes de tipo huevo python debe descargar para instalación.
- zcml: Indica a buildout, cuales paquetes de tipo huevo python deben ser configurados en base a archivos de configuración zcml.
Además contiene la parte de la declaración de los paquetes a los cuales se les realizará un check out para la instalación de los mismos en la instancia Zope, es decir la parte sources que fue previamente mencionada en el archivo 02-mrdeveloper.cfg.
plonesite.cfg¶
Extiende del archivo de configuración cenditelmultimedia.cfg. Utiliza el récipe collective.recipe.plonesite aceptando las siguientes variables de configuración:
- site-id: Nombre del sitio de ejemplo creado con el récipe.
- intance: Corresponde al nombre de la instancia que esta corriendo el script,
por defecto
instance
. - profiles: Corresponde a una lista de perfiles de GenericSetup que se ejecutaran cada vez que se ejecute el script buildout.
templates¶
Este directorio contiene modelos de archivos de configuración que son modificados en base a las variables declaradas en el archivo 00-variables.cfg, permitiendo replicar configuraciones para el servidor nginx.
products¶
Corresponde al directorio products creado por bootstrap.py.
src¶
Es el directorio de instalación donde serán colocados los archivos en desarrollo. En este caso, el récipe mr.developer coloca aquí dichos archivos.
etc¶
En este directorio, son colocados los archivos de salida generados a partir del récipe de collective.recipe.template
Segundo paso¶
Instale una jaula de python2.4 en su sistema para evitar daños a su sistema operativo. Proceda como se señala a continuación.
# apt-get install python2.4 python2.4-minimal python2.4-dev
python-virtualenv python-setuptools
$ virtualenv -p python2.4 python2.4/
$ cd python2.4/
$ source bin/activate
(python2.4)$ cd $HOME/buildouts/cenditelmultimedia
(python2.4)$ python bootstrap.py
El primer comando, instala las dependencias python en el sistema operativo. Si usted se encuentra bajo el sistema operativo Debian Lenny o Ubuntu Karmic Koala, no tendrá problemas de dependencias. El segundo comando, crea una jaula virtual de python en su directorio de usuario llamada python2.4, con el tercer comando entramos a ella, para activarla usamos el cuarto comando, los siguientes comandos nos llevan al entorno de desarrollo allí llamamos al interprete de python para que ejecute al archivo bootstrap.py; el cual nos dará una salida como:
Downloading http://pypi.python.org/packages/source/d/distribute/distribute-0.6.14.tar.gz
Extracting in /tmp/tmpIUY_yz
Now working in /tmp/tmpIUY_yz/distribute-0.6.14
Building a Distribute egg in /tmp/tmptWrUVV
/tmp/tmptWrUVV/distribute-0.6.14-py2.4.egg
Creating directory '/home/victor/buildouts/tutorial/bin'.
Creating directory '/home/victor/buildouts/tutorial/parts'.
Creating directory '/home/victor/buildouts/tutorial/eggs'.
Creating directory '/home/victor/buildouts/tutorial/develop-eggs'.
Getting distribution for 'zc.buildout==1.4.3'.
Got zc.buildout 1.4.3.
Generated script '/home/victor/buildouts/tutorial/bin/buildout'.
Tercer Paso¶
(python2.4)$ ./bin/buildout -vNc plonesite.cfg
Al realizar esto, buildout ejecutará las configuraciones necesarias en el sitio para instalar los productos. A continuación vamos a ver como configurar el resto de la aplicación.