Introduction
What this tutorial does, and does not, aim to accomplish
robust (adjective) --
1 a : having or exhibiting strength or vigorous health b : having
or showing vigor, strength, or firmness c : strongly formed or
constructed : STURDY
If you follow this tutorial, you'll end up with a robust Zope and
Plone installation, including
* A ZEO storage server and multiple clients
* Two virtualhosts -- one heavily cached for anonymous visitors,
and one secured via https for authenticated users, with redirection
between the two as needed [1]
* Scripts for packing the ZODB, backing up your site, starting up on boot,
and information about other maintenance "best practices" [1]
as well as the reasoning behind these configuration choices.
This tutorial assumes that you will be deploying Plone for a site
that has a large ratio of anonymous viewers to logged-in Members.
This is far from the only use-case for Plone - if your situation
differs you may want to consider modifications to the steps outlined
in the following pages, particularly when it comes to the caching
virtualhost configurations.
This tutorial also assumes that you will deploy Zope and Plone on
a Unix-based system. I do not have enough experience with Windows
to include specific information on how to adapt this installation
method for that platform.
Finally, the configuration choices in the tutorial are made with
production deployment in mind. Plone ships configured for development,
and some of the changes that follow reduce the ability to
easily develop Plone products and skins. In any case, "best
practices":/documentation/tutorial/best-practices suggest that you
should create a separate Zope instance and Plone sites for development
and do as much as possible in filesystem-based products that can
be used by both production and development instances.
Prerequisites:
* The latest available versions of Python 2.3.x and Apache 1.3.x installed
* Two users - one normal user (can be your regular login account)
and one unprivileged user to run Zope and ZEO. The normal user
should be a member of the same group as the unprivileged user. For
example, create a 'zope' user with a 'zope' group and add the normal
user to the 'zope' group.
* Root access/ability to restart Apache and edit Apache configuration files
* Intermediate Unix knowledge
* Intermediate Plone knowledge
Versions used at the time of writing:
* Python 2.3.4
* Zope 2.7.3
* Plone 2.0.5
* Apache 1.3.33 (including mod_proxy, mod_rewrite, mod_expires, mod_headers)
.. [1] When I started this tutorial I had grand plans...unfortunately life, in the form of a new baby and a new full-time job after several years of consulting, has intruded. Stay tuned for a part 2 to this tutorial that will cover the above topics

