Author: Agendaless Consulting



  repoze.zope2 is a decomposition of the Zope 2 appserver publication
  machinery (ZPublisher) into a WSGI application component.  It relies
  on separately-distributed middleware pieces to perform some of the
  features previously handled by ZPublisher and other parts of Zope 2.

Installing repoze.zope2

  With a Python 2.4 interpreter >= 2.4.3 (**Python 2.5+ is
  unsupported**) with setuptools installed, install the 'virtualenv'

    $PYTHONHOME/bin/easy_install virtualenv

  When this is done, create a virtualenv "sandbox" to hold the
  repoze.zope2 packages and instance data:

    $PYTHONHOME/bin/virtualenv --no-site-packages /path/to/sandbox

  A directory named 'sandbox' will be created in the /path/to.
  directory.  You can use any path you like.

  After creating a virtualenv sandbox, install the 'repoze.zope2' egg
  into the virtualenv.

    /path/to/sandbox/bin/easy_install -i repoze.zope2

  NOTE: Some "Syntax Error" messages may be printed to the console
  during this process; these can be ignored.  This is distutils
  attempting to byte-compile Zope "Python Scripts" in skin directories
  that aren't valid Python syntax.  

  After the repoze.zope2 packages are installed into the virtualenv,
  you can finally create "instance" files (config files) within the
  sandbox by running "mk2zope2instance"::


  After these steps have been performed, here's what has happened::

  - a "virtual Python" has been installed within the
    "/path/to/sandbox" directory.  Packages installed to this virtual
    Python's 'site-packages' directory will not conflict with packages
    installed into your "normal" Python's 'site-packages' directory.

  - All packages required by repoze.zope2 have beeen downloaded,
    compiled, and installed as Python eggs in the *virtual* Python's
    'site-packages' directory.

  - 'Products', 'logs', 'var', and 'etc' directories have been created
    inside the sandbox directory.  'Products' is where 3rd party Zope
    products should be installed.  'logs' is where Zope logs will go,
    'var' is where ZODB data files will go, 'etc' is where config
    files are placed.

  - A sample set of configuration files have been installed into the
    sandbox directory's 'etc' subdirectory.  These include::

    - 'zope.ini', a Paste configuration file used to establish the
      Paste (WSGI) pipeline which repoze.zope2 will use to serve up

    - 'zope.conf', a classic Zope 2 configuration file which can be
      used to adjust Zope settings.

    - 'site.zcml', a boilerplate site.zcml that should be used to
      control ZCML processing.

The Default Sandbox Configuration

  The configuration of WSGI components in the sandbox setup form a
  publishing environment in which most Zope applications should be
  able to run without modification.  Some of the jobs previously
  filled by components in Zope have been assumed by repoze and other
  WSGI middleware components:

  - The job of ZServer has been filled by the zope 3 WSGI server (via

  - The job of ZPublisher object publishing has been filled by the
    object publisher in repoze.zope2

  - The job of ZPublisher transaction management has been filled by middleware.

  - The Zope 2 "error_log" has been replaced with error-catching /
    error-logging middleware in Paste.  (Visit /__error_log__ to see
    the exception history).

  - "access" logging can now be handled by a middleware component.

  - The job of VirtualHostMonster is now filled by repoze.vhm.


  These utilities are available in the "bin/" directory of the
  generated sandbox.

  installproduct -- provided the directory path of a classic Zope 2
  Product (unpacked), installproduct will attempt to convert the
  product into a Python egg and install it into the sandbox's
  site-packages directory.  This is an alternative to unpacking
  putting the product inside the sandbox "Products" directory.

  addzope2user -- script which a