Published: May 4, 2013 by Noe Nieto
I’ve been helping my friends with their Plone site for some years now. Initially, the site was hosted on IntoVPS, which is quite cheap and nice to setup. Unfortunately, at that time, we needed a lot of storage and their plans didn’t provide enough space, so I moved the site to amazon AWS and it’s been almost two years since then. Unfortunately, AWS is very expensive and we have lowered our storage requirements since then. So I’m moving the site again, this time to WebFaction.
We went for the 256MB plan because it includes 256MB of RAM (plone4 uses 160MB at most), 100GB of space (right now we need about 60 GB) and 600 GB of bandwidth which I’m not measuring yet. So, a single plone instance will fit there.
We are using HTTPS to encrypt the whole site’s traffic. I set up two websites:
one for HTTP and another for HTTPS. The HTTP website is linked to a
Static/CGI/PHP application that only has two files: an
index.html and a
.htaccess file which it’s only purpose is to rewrite/redirect the traffic to
the HTTPS port.
RewriteRule ^(.*)$ https://www.holokinesislibros.com/$1 [R=301,L]
On the HTTPS website I created a Zope (2.13.15) - Plone (4.1.6)
application. This is basically a directory that contains a Python2.6
buildout-cache directory and uses Plone’s universal installer
to create and bootstrap a buildout environment in another directory called
zinstance. It also creates a crontab entry to start Zope’s instance every 20
But I’m using a customized buildout, so I ignored the
and instead cloned my repo on the application directory and bootstraped it
with a fresh virtualenv of python 2.7.
hg clone ssh://email@example.com/tzicatl/holokinesis_libros
../ve/bin/python bootstrap.py -c webfaction.cfg
bin/buildout -c webfaction.cfg
Not everything went smooth. I had to adjust my buildout so it could run with
the new branch of
zc.buildout 2.0. Namely: some syntax errors in my
buildout.dumppickedversions extension and update
I also had to copy some settings from the
zinstance directory, like the
Finally, in order to completely switch from
zinstance to my own buildout in
holokinesis_libros I change the crontab command, from:
2,22,42 * * * * $HOME/webapps/hkl_plone/zinstance/bin/instance start > /dev/null 2>&1
2,22,42 * * * * $HOME/webapps/hkl_plone/holokinesis_libros/bin/instance start > /dev/null 2>&1
Setting up HTTPS
Plone (in fact, Zope2) needs to be monkey-patched so it recognizes the
Fortunately, webfaction provides a patch>
that works really well with recent versions of Plone (4.1.6).
wget -O patch.tar.gz http://wiki.webfaction.com/attachment/wiki/WebFactionSslPatch/WebFactionSSLPatch-1.0.tar.gz?format=raw
tar -zxvf patch.tar.gz
I had to to issue a support ticket so the web serve could load my SSL certificates. I only had to point them to the directory where my certs are and they did all the job cofiguring the certificates.
data.fs and blobs
I went the easy route and made an uncompressed tarball of the
and copied it to the new server.
On the AWS server:
tar -cf var.tar var/
# I started a GNU screen session for this.
rsync -avz --delete var/ firstname.lastname@example.org:/home/tzicatl/webapps/hkl_plone/holokinesis_libros/var/
# Then go to sleep, because it takes a lot of time to transfer from one site to another.
On the Webfaction server:
.. code-block :: bash
tar -xf var.tar
Server startup and configuration of VHM
Starting the Plone instance is quite easy:
The ZMI welcome screen shows on https://www.holokinesislibros.com/ and https://www.holokinesislibros.com/Plone works very well. Now it is time to login to the ZMI and add a few configuration tot he Virtual Host monster. And, at the end I ended up adding just one line:
Its alive and kicking! :)