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 that this is the “standard” way to setu-up plone. This 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 did 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 mantain 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 s3cr3t
    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