Reference: Plone Overview

Reference: Plone Overview

Reference: Plone Overview

Terminology

Zope is the generic name of the application server running Plone.

Plone is the generic name for a set of products or modules that provide a usable front-end to Zope. A Zope site can contain multiple Plone instances. (See differences between Plone and Enfold Server).

Zope Object Data Base (ZODB) stores all the data and transactions from Zope. Although similar in function to a relational database, it is actually an object database which appends new transactions at the end. The ZODB usually refers to the Data.fs file which resides in the /var directory.

Zope Enterprise Object ("ZEO") server is an important feature of Zope that allows the database to be stored at one location but accessed by more than one Zope client (and more than one machine). Doing this makes it possible to load balance and maximize the use of available CPU and RAM from additional machines. Read more about ZEO and Enfold Server.

A Zope Management Interface (ZMI) is the two panel web front end for performing certain administrative functions on Zope. It is intended for use only by system administrators. It handles database utilities and status checking.

A Zope client is a copy of the Zope application server that uses a separate configuration file (and often a separate storage location). Typically, each Zope client has a separate directory, a unique port for communicating with the ZEO server and separate data.fs, zope.conf and Z2.log files. A ZEO Server can have more than one Zope clients accessing it. Several Zope clients can access the same ZODB, as managed by the ZEO server. You can start/stop each Zope client individually, or you can run a command to start everything. Within a Zope client, you can create a Plone instance or several Plone instances. A Zope client can exist on a separate machine and/or IP address.

A Plone site (also called a "Plone instance") is the front end for a Zope site using the CMFPlone product. To add a Plone site, go into the ZMI (usually something like http://192.168.1.150:8090/manage ) by selecting Plone site in the dropdown box on the right side.

Plone Site Setup is the control panel web page on both Plone and Enfold Server. A link to Plone Site Setup should appear at the top right side of the page if the logged in user possessing Manager or Zope administrator privileges. Typically the options that appear on this panel are specific to Plone or Enfold Server. However, a link to the ZMI (see above) also is here.

The Plone Unified Installer is an executable which installs Zope/ZEO and includes the CMFPlone product to make Plone instances. This is the open source version which doesn't include the features added by Enfold Server. (See differences between Plone and Enfold Server).

Enfold Server is a Windows-only version of Plone which let you create multiple Zope clients on the machine. It uses only one ZODB. (See differences between Plone and Enfold Server).

A product is a plugin (written in python) which can be dropped inside the Products directory of the install. This product typically adds extra functionality. Plone itself (specifically CMFPlone) is a product within Zope. (Note: although products are still frequently used for Plone, Plone 3x is starting to emphasize the use of buildout and python eggs over using products).

Encontrol is the desktop utility installed along with Enfold Server (also called the Enfold Server configuration utility). This tool lets you restart Enfold Server, change ports and add Zope clients. Note: Enfold Server is configured to start automatically upon startup, so you don't need to start Enfold Server using Encontrol. (Read more about Encontrol).

Planning Your Deployment

Selecting Hardware

In general, adding RAM and hardware can be the fastest and easiest way to improve basic Plone performance. Once a load balancing and zeo infrastructure is in place, the process of adding hardware is not hard.

Generally, the rule of thumb is to have one Zope client per processor on your machine. For example, if your machine has two processors, then it is suitable for two Zope clients. You can also put Zope clients for the same Zope on separate machines.

RAM

A Zope client can support several Plone instances. The number of Plone instances you can support per Zope client depends mainly on available RAM. Here are general guidelines: 1. For read-intensive Plone instances, 1 gigabyte of RAM is sufficient. A read-intensive operation is one where the web surfer is reading a web page, but not making modifications. 2. For write-intensive Plone instances, 2 gigabytes of RAM is sufficient. A write-intensive operation on Plone is one that modifies user data. Every time this happens, the ZODB records the transaction. Examples: editing a document, changing the status of something or making a comment or adding an event.

These are conservative estimates and may vary according to use. For example, one business client of Enfold with heavy amounts of write-accesses uses only about 1.2 gigabytes per instance.

Planning HW Storage Space

The ZODB (the data.fs file) for a Zope client does not normally use a lot of space. Even with larger sites, the main zodb for each Plone instance rarely exceeds two or three gigabytes per Zope client (even though there are many sites in production with data.fs files up to 30 gigabytes). The Zope logs (Z2.log, and event.log) in each Zope client increases in size depending on how often they are rotated/discarded. Normally the Z2.logs for each Zope client don't use much space (only a few megabytes per day). If you run in debug mode, the Z2 logs will accumulate very quickly (ballooning 100x or even 1000x the typical file size). For this reason, it is good to store server logs on a separate partition on the file system. To change file locations for the Z2 logs, edit the appropriate setting in the zope.conf file (for the Zope client) or the zeo.conf file (for the ZEO server).

How many Zope Clients should you use?

The Encontrol utility lets you create another client. Each client communicates with the browser via the management port and accesses the server via the ZEO port.

Zope clients increase the number of concurrent users who can access your site. Additional clients can be added to a load balancing solution. Keep in mind that if clients exist on the same machine and the machine failed, you wouldn't see the advantages. You would need to have Enfold Server on more than one machine to reap this benefit.

Before you create a Zope client, you should make sure your hardware supports another Zope client (see above).