Installing Zope
===============
This document describes installing Zope with
`zc.buildout `_
(the **recommended** method) or via ``pip``.
Prerequisites
-------------
In order to install Zope, you must have the following prerequisites
available:
- A supported version of Python, including the development support if
installed from system-level packages. Supported versions include
**3.9** up to **3.13**.
- Zope needs the Python ``zlib`` module to be importable. If you are
building your own Python from source, please be sure that you have the
headers installed which correspond to your system's ``zlib``.
- A C compiler capable of building extension modules for your Python
(gcc recommended).
- If you are using a Python interpreter shipping with your Linux distribution,
you need to install the matching Python development package. As example, for
Python 3 on Ubuntu 18.04, you have to type the following:
.. code-block:: console
$ sudo apt-get install python3-dev
Choice of installation methods
------------------------------
Zope can be installed using either straight ``pip`` or the ``zc.buildout``
buildout and deployment tool.
You can use ``pip`` and the built-in script ``mkwsgiinstance`` for testing or
very simple setups that don't require much customization or scripting. It will
create a basic set of configurations and a simple start/stop script.
If you need customization and if you don't want to maintain configurations and
scripts by hand you should use ``zc.buildout`` in conjunction with the buildout
add-on ``plone.recipe.zope2instance`` instead. This is a powerful combination
for creating repeatable builds for a given configuration and environment.
The Zope developers use ``zc.buildout`` to develop Zope itself as well as the
dependency packages it uses. **This is the recommended way of installing Zope**.
Installing Zope with ``zc.buildout``
------------------------------------
Installing the Zope software using ``zc.buildout`` involves the following
steps:
- Create a virtual environment
- Install ``zc.buildout`` into the virtual environment
- Create a buildout configuration file ``buildout.cfg``
- Run the buildout
The following examples are from Linux and use Zope version 5.0. Just replace
that version number with your desired version.
.. code-block:: console
$ python3.10 -m venv zope
$ cd zope
$ bin/pip install -U pip wheel zc.buildout
$ bin/buildout
Using the simplest possible configuration
+++++++++++++++++++++++++++++++++++++++++
Here's a minimum ``buildout.cfg`` configuration example that will create the
built-in ``bin/mkwsgiinstance`` script to create a Zope instance:
.. code-block:: ini
[buildout]
extends =
https://zopefoundation.github.io/Zope/releases/5.0/versions-prod.cfg
parts =
zopescripts
[zopescripts]
recipe = zc.recipe.egg
interpreter = zopepy
eggs =
Zope
Paste
Using ``plone.recipe.zope2instance``
++++++++++++++++++++++++++++++++++++
To make your life a lot easier, you can use ``plone.recipe.zope2instance``
to automate a lot of the configuration tasks from the following document,
:doc:`operation`. ``plone.recipe.zope2instance`` has a myriad configuration
options, please see the
`PyPI page `_.
.. code-block:: ini
[buildout]
extends =
https://zopefoundation.github.io/Zope/releases/5.0/versions-prod.cfg
parts =
zopeinstance
[zopeinstance]
recipe = plone.recipe.zope2instance
eggs =
user = admin:adminpassword
http-address = 8080
zodb-temporary-storage = off
One feature this kind of installation offers is the easy integration of WSGI
servers other than the built-in ``waitress``. You can specify a file path to a
WSGI configuration file to use when starting the Zope instance. This works for
WSGI servers that offer a PasteDeply-compatible entry point, like ``gunicorn``.
You will need to create the ``.ini`` file yourself, and don't forget to
include the WSGI server software egg in the ``eggs`` specification:
.. code-block:: ini
[zopeinstance]
recipe = plone.recipe.zope2instance
eggs =
gunicorn
user = admin:adminpassword
http-address = 8080
zodb-temporary-storage = off
wsgi = /path/to/zope.ini
Installing Zope with ``pip``
----------------------------
Installing the Zope software using ``pip`` involves the following
steps:
- Create a virtual environment (There is no need to activate it.)
- Install Zope and its dependencies
Example steps on Linux. Replace the version number "5.0" with the latest
version you find on https://zopefoundation.github.io/Zope/:
.. code-block:: console
$ python3.10 -m venv zope
$ cd zope
$ bin/pip install -U pip wheel
$ bin/pip install Zope[wsgi] \
-c https://zopefoundation.github.io/Zope/releases/5.0/constraints.txt
You can also install Zope using a single requirements file. **Note that this
installation method might install packages that are not actually needed** (i. e.
more than are listed in the ``install_requires`` section of ``setup.py``):
.. code-block:: console
$ bin/pip install \
-r https://zopefoundation.github.io/Zope/releases/5.0/requirements-full.txt
Building the documentation
--------------------------
You can build the documentation locally. Example steps on Linux. Replace the
version number "5.0" with the latest version you find on
https://zopefoundation.github.io/Zope/:
.. code-block:: console
$ wget https://pypi.org/packages/source/Z/Zope/Zope-5.0.tar.gz
$ tar xfz Zope-5.0.tar.gz
$ cd Zope-5.0
$ python3.10 -m venv .
$ bin/pip install -U pip wheel
$ bin/pip install Zope[docs] -c ./constraints.txt
$ cd docs
$ make html