Noe Nieto

Mi sitio personal | Personal site

A buildout for Plone 3.3.5 + fss + relstorage

Buildout recipe para Plone 3.3.5 usando FileSystemStorage y RelStorage en lugar de ZODB tradicional.

This is an uncommon Plone buildout. There is no ZODB. Instead, we use FileSystemStorage for files, images, and so on, and RelStorage for storing everything else in a relational DB.

Edit: Changed the title because it can confuse new users into thinking this is the "standard" way to set up Plone. It is not.

Intro

On iServices, we used the Plone + FileSystemStorage + RelStorage bundle for several reasons that I don't remember well. If I have to answer why we used that combination, I'd probably pass this question to @erik_river to answer it. He was the first one who made it work.

So, I maintain all these sites, and over time we had some different ways to integrate the software bundle. Recently I had to upgrade this site to Plone 3.3.5 and resolved to make a definitive buildout recipe. And thanks to the help of the guys at the ZODB-dev mailing list I give you my ultimate Plone + FileSystemStorage + RelStorage buildout recipe.

Note: read the RelStorage documentation.

The buildout recipe:

[buildout]
parts =
    zope2
    productdistros
    instance
    fss
    zopepy

extends =
    http://dist.plone.org/release/3.3.5/versions.cfg
versions = versions

find-links =
    http://dist.plone.org/release/3.3.5
    http://dist.plone.org/thirdparty
    http://packages.willowrise.org

# Add additional eggs here
eggs =
#...System
    elementtree
    psycopg2
    PILwoTK
#...plone
    RelStorage
    Plone
    iw.fss

develop =

zcml =
    iw.fss
    iw.fss-meta

rel-storage =
    type postgresql
    dbname plone335_zodb
    user zope
    password CHANGE_ME
    host localhost

[versions]
plone.recipe.zope2instance = 3.6
#ZODB3 = 3.7.3-polling
ZODB3 = 3.8.3-polling

[zope2]
recipe = plone.recipe.zope2install
fake-zope-eggs = true
url = ${versions:zope2-url}


[productdistros]
recipe = plone.recipe.distros
urls =
nested-packages =
version-suffix-packages =

[instance]
recipe = plone.recipe.zope2instance
zope2-location = ${zope2:location}
user = admin:admin
http-address = 8080
#debug-mode = on
#verbose-security = on
eggs =  ${buildout:eggs}
zcml =  ${buildout:zcml}
rel-storage= ${buildout:rel-storage}
products =
    ${buildout:directory}/products
    ${productdistros:location}


[fss]
recipe= iw.recipe.fss
zope-instances = ${instance:location}
storages =
    files / flat

[zopepy]
recipe = zc.recipe.egg
eggs = ${instance:eggs}
interpreter = zopepy
extra-paths = ${zope2:location}/lib/python
scripts = zopepy