Why install Zope and Plone from source?
Why install Zope and Plone from source?
With a Windows and Mac OS X installer available from plone.org, as
well as the inclusion of packages in most Linux distributions and
BSD ports systems, you may be wondering why I elect to install
Zope and Plone from source. The answer is simple and can be expressed
in one word: *Control*. By using a package or port you are giving up
some control to the maintainer over directory layout, dependencies,
and versions. Some distributions only include outdated versions of
Zope and Plone, while others include the latest released versions
immediately after they have been released, often without adequate
testing. This can be a problem if you need to upgrade a dependency and
your package manager insists on upgrading Zope or Plone to a version
that you have not tested with your application.
My philosophy regarding OS packaging systems is that I use them
to install all of the utilities and applications that make my
life easier, but I prefer to install many of the "mission-critical"
services from source to have more control over the upgrade
cycle. In the world of Zope this is especially pleasant, as it's
a trouble-free and quick compile if you have the right version of
python.
Should I also install Python and Apache from source?
Depending on your needs and the version that ships with your OS you may
also want to install Python or Apache from source. For example, Mac OS
X 10.3 ships with Python 2.3, which is a bit out of date. I install
2.3.4 via the excellent
"DarwinPorts":http://darwinports.opendarwin.org system.
Apache is a special case. I prefer Apache 1.3.x due to its proven
reliability. Changes to Apache 1.3 are limited to bug and security
fixes, so I am comfortable using the latest version supplied with the
OS or packaging system. Of course, if your Apache system depends on
add-on modules that may be newer than you are willing to deploy, you
should also consider maintaining a source install outside of your
packaging system.
Why use ZEO?
ZEO is most known for its clustering abilities - allowing you to
distribute your site's load over multiple CPUs. However, there are
several reasons to use ZEO even if you are only using one
single-processor machine.
* You can dedicate one client to the public site and have a second
client that handles batch jobs like packing the ZODB and re-indexing
the catalog
* You can debug the live site via 'zopectl debug' - some problems may
only show up under a production-level load
* You're future-proofing your site against the day that you do need a
cluster of machines
How many ZEO clients?
The ZEO server is I/O bound, while ZEO clients are CPU and RAM bound.
I would recommend creating a publicly accessible ZEO client for each CPU
you have available, if you have at least 256MB of RAM (preferable 512MB+)
for each.
In the interest of simplicity, most of this tutorial will assume that you are
working with one single-processor machine and will have two zeo
clients -- one for the public site proxied by Apache and one for
maintenance/batch purposes. A final section covering performance (TBD)
will discuss how to migrate this configuration to a cluster of machines.

