El montaje de un sitio Plone con la base de datos objetos Data.fs separadas puede ser muy útil si se están ejecutando varios sitios Plone en una sola instancia de Zope.
Esto significa que usted puede tomar ese sitio y moverlo a otro lugar, o migrarlo, sin afectar a nadie más. También puede restaurarlo sólo este sitio si ocurre algo desastroso.
Existen diversos procedimientos para establecer puntos de montajes que a continuación se describen:
Este es el procedimiento para cambiar una configuración predeterminada en una instalación con un punto de montaje para un ZODB.
Crear una instancia Plone en una máquina de desarrollo en alguna parte. Debe ser la misma versión de Plone de su versión de producción (por ejemplo, Plone 3.3.6 o la que sea).
Elimine el sitio por defecto de Plone que creado en esta instancia y crear un nuevo sitio Plone - le da un identificador. (Es posible que desee agregar un usuario administrador para el sitio en este punto).
Compacte la base de datos y detenga la instancia.
Copie el archivo Data.fs de esta instancia en un directorio con el mismo identificador como el sitio que ha creado.
Acceda a este directorio creado en la carpeta var/filestorage en su instancia de producción.
Utilice la receta de zc.buildout llamado collective.recipe.filestorage en su configuración buildout para crear los puntos de montaje (donde las piezas se muestra una lista de los identificador de nombres de sitio):
[mountpoints]
recipe = collective.recipe.filestorage
location = var/filestorage/%(fs_part_name)s/Data.fs
parts =
cliente-1-sitio-web
cliente-2-intranet
Detenga el servidor Zope de producción y ejecute de nuevo su buildout.
Iniciar el servidor Zope de producción, acceda a través de la ZMI y utilice la lista desplegable en la parte superior derecha y seleccione la opción Plone site para crear un sitio Plone nuevo con el mismo identificador como su sitio de montaje.
A continuación, elimine este sitio (sí, yo sé que es raro, pero es algo que tiene que ver con el nivel superior de carpetas acl_users).
Utilice la lista desplegable en la parte superior derecha y seleccione la opción ZODB mount points para crear un nuevo punto de montaje de ZODB. Usted debe ver a sus puntos de montaje listo para crearlos.
Utilizando la receta de zc.buildout llamado collective.recipe.filestorage, es muy fácil ya que solo necesita agregar una nueva linea en su configuración buildout, cada linea representa un punto de montaje para cada sitios, a continuación se muestra un ejemplo de esto:
[mountpoints]
recipe = collective.recipe.filestorage
location = var/filestorage/%(fs_part_name)s/Data.fs
parts =
cliente-1-sitio-web/Data
cliente-2-intranet/Data
cliente-2-sitio-web/Data
cliente-3-blog/Data
Luego debe guardar los cambios y ejecutar de nuevo el script buildout, con el siguiente comando:
./bin/buildout -vN
Al hacer copias de seguridad es un poco complejo usando las herramientas generadas por el buildout del Instalador Unificado (por el hecho de que cada Data.fs esta en su propio directorio), pero este punto trabaja en su configuración buildout de la siguiente forma:
[backup]
additional_filestorages =
cliente-1-sitio-web/Data
cliente-2-intranet/Data
Los siguientes consejos le ofrecerán una serie de recomendaciones para evitar problemas al establecer puntos de montajes:
El uso de archivos separados Data.fs requiere mucha memoria, en la que cada Data.fs, en cada cliente, se creará un objeto cache en la memoria RAM. Usted puede reducir el número de objetos almacenados para todas las bases de datos a la vez en la parte de los puntos de montaje de su buildout, utilizando la opción de tamaño zodb-cache. Alternativamente, usted puede definir el número de objetos de un Data.fs particular usando una configuración adicional buildout con el prefijo filestorage_.
Truco
Ver la receta collective.recipe.filestorage para más detalles.
En versiones posteriores ZODB, también es posible controlar el tamaño de la memoria, en bytes, en lugar de números de los objetos. Usted también puede buscar en el almacenamiento de blob (en el sistema de archivos) para cuando requiera almacenar objetos de gran tamaño en la ZODB.
Nunca copiar y pegar objetos entre los puntos de montajes de sus sitios. Usted puede hacer esto a través de la ZMI y es muy tentador. Zope simplemente copia un puntero al objeto, no el objeto en sí mismo, así que cuando el objeto se elimina en la base de datos de origen, se obtiene una referencia pendiente y, finalmente, base de datos de errores poskey en el base de datos destino muestra una serie de errores horribles para arreglar.
Eso también puede ser un gran dolor, porque el error, probablemente no aparecerá hasta que usted compacte su base de datos de origen, que pueden ser muy pocos días después de que en realidad se elimino el objeto - y por supuesto que usted necesita para hacer una operación de roll back en la base de datos de origen (la cual no aparecerá dañada), sino la base de datos de destino.
Creo que las versiones posteriores de ZODB tienen algún tipo de bandera o marca “flag” que establezcan para evitar que esto no suceda, pero me gustaría tener cuidado.
El código fuente de este archivo esta hospedado en GitHub. Todos pueden actualizar y corregir errores en este documento con unos clic - sin necesidad de descargar.
Para mas información básica acerca de como actualizar este manual y referencia a sintaxis Sphinx, por favor consulte la guía Escribiendo y actualizando el manual.