Thanks Maurits

I finally figured it out.  Here's what I found.

Installing ZEO on Windows using Buildout on Plone 4
 
Installing ZEO on Windows is different than using the Unified Installer. 
There is currently no option to choose a ZEO install.  If you want to
install ZEO when you install Plone 4, this how-to describes a way to do
this.
First, you need a working Plone 4 install so install Plone 4 using the
Windows installer.  If you have already installed it and made changes, the
process is the same.  The only file you need to change is buildout.cfg.

Buildout.cfg
Add Ports.  

Look for the area in the [Buildout] section labeled Ports.  The default is: 
############################################
# Ports
# -----
# Specify the ports on which your Zope installation
# will listen.
http-address = 8080

Change it to this:

############################################
# Ports
# -----
# Specify the ports on which your Zope installation
# will listen.
# ZEO Server
zeo-address = 127.0.0.1:8100
# Zope client 1
http-address = 8080
# Zope client 2
client2-address = 8081  

Add Parts
At the end of the [buildout] sections is the Parts section.  Add zeoserver,
client1, and client2.  Here’s an example:
############################################
# Parts Specification
# -------------------
# Specifies the components that should be included in the buildout.
# All the basics are in the base.cfg extension; you may add your
# own if you need them at the end of this file.
parts =
    zeoserver
    client1
    client2
    zopepy
    zopeskel
    backup
    unifiedinstaller
    controller
    productdistros

Replacing Instance with ZEO server and 2 clients.

After the [buildout] section, there is a section named [instance].  Replace
this with 3 sections: [zeoserver], [client1], and [client2].  Here is an
example:

[zeoserver]
# Use this section to install and configure a Zope
# Enterprise Objects server.
# For options see http://pypi.python.org/pypi/plone.recipe.zeoserver
recipe = plone.recipe.zeoserver
zeo-address = ${buildout:zeo-address}
# Put the log, pid and socket files in var/zeoserver
zeo-log     = ${buildout:directory}/var/zeoserver/zeoserver.log
pid-file    = ${buildout:directory}/var/zeoserver/zeoserver.pid
socket-name = ${buildout:directory}/var/zeoserver/zeo.zdsock
blob-storage = ${buildout:directory}/var/blobstorage

[client1]
# Use this section to install and configure a Zope
# client instance.
# For options see http://pypi.python.org/pypi/plone.recipe.zope2instance
recipe = plone.recipe.zope2instance
zeo-client = true
zeo-address = ${zeoserver:zeo-address}
# The line below sets only the initial password. It will not change an
# existing password.
user = ${buildout:user}
http-address = ${buildout:http-address}
blob-storage = ${zeoserver:blob-storage}
shared-blob = on
# change debug-mode to "on" to run in development mode
debug-mode = ${buildout:debug-mode}
# change verbose-security to "on" for detailed security
# errors while developing
verbose-security = ${buildout:verbose-security}
deprecation-warnings = ${buildout:deprecation-warnings}
# Put the log, pid, lock files in var/client1
event-log = ${buildout:directory}/var/client1/event.log
z2-log    = ${buildout:directory}/var/client1/Z2.log
pid-file  = ${buildout:directory}/var/client1/client1.pid
lock-file = ${buildout:directory}/var/client1/client1.lock

# If you want Zope to know about any additional eggs, list them here.
# e.g. eggs = ${buildout:eggs} my.package
eggs =
    ${buildout:eggs}

# If you want to register ZCML slugs for any packages, list them here.
# e.g. zcml = my.package my.other.package
zcml = 
    ${buildout:zcml}
    
products =
    ${buildout:directory}/products

# You may also control the environment variables for the instance.
environment-vars =
    PYTHON_EGG_CACHE ${buildout:directory}/var/.python-eggs

[client2]
# a copy of client1, except adjusted address and var location
<= client1
http-address = ${buildout:client2-address}
event-log = ${buildout:directory}/var/client2/event.log
z2-log    = ${buildout:directory}/var/client2/Z2.log
pid-file  = ${buildout:directory}/var/client2/client2.pid
lock-file = ${buildout:directory}/var/client2/client2.lock 

Adding additional clients.  
The section [client2] is much shorter than [client1].  That is because the
line
<=client1
copies all of the [client1] code into the [client2] section.  The rest of
[client2] just overrides the values from [client1] with values that will
work with [client2]

To create additional clients, copy [client2] and change its values.  Here is
an example for [client3]:

[client3]
# a copy of client1, except adjusted address and var location
<= client1
http-address = ${buildout:client3-address}
event-log = ${buildout:directory}/var/client3/event.log
z2-log    = ${buildout:directory}/var/client3/Z2.log
pid-file  = ${buildout:directory}/var/client3/client3.pid
lock-file = ${buildout:directory}/var/client3/client3.lock 

You also need to add the client3-address to the [buildout] section,

# Zope client 3
client3-address = 8082

and add client3 to the Parts Specification

When you are finished, run 
.\bin\buildout -n


Windows Services

At this point, you will have only one Windows service, created for the
instance when you installed Plone 4.  You will need several Windows
services, depending on the number of clients you have created.  You will
need one for the ZEO server and one for each client.  You can remove the
original service created when you installed Plone 4.

To add a Windows service for the ZEO server, open a Windows Command Prompt
and go to the bin directory.  Run this command:

C:\Program Files\Plone\bin>zeoserver_service install
Installing service ZEO_698716265
Service installed
Install a Windows service for each of the clients:

C:\Program Files\Plone\bin>client1 install
Installed Zope as Windows Service "Zope691475530".

C:\Program Files\Plone\bin>client2 install
Installed Zope as Windows Service "Zope691475531".

Note:  The numbers after ZEO or Zope will depend on your machine and may
differ from this example.

When you installed Plone 4, it created a Windows service for the instance. 
You no longer need this service.  To remove it, use this command:

C:\Program Files\Plone\bin>instance remove
Removed Windows Service "Zope-372241316".

Running Plone with ZEO

To run ZEO, start the ZEO service and each of the client services.  

To view Plone, go to an http address for one of the clients.  If you have 2
ZEO clients, either of these addresses will work if you used the ports
listed in the example.

http://localhost:8080/

http://localhost:8081/
 
Useful Batch files.

If you want to start and stop the services, you can use the Services
Management Console in Windows.  If you are working on the file system, you
might find these batch files useful.  Create a .bat file for each of the
following examples and place them in the bin directory.

ZEOStartAll.bat

REM  This file will start the ZEO server and 2 clients.  Add more clients if
necessary.
zeoserver_service start
plonectl client1 start
plonectl client2 start

pause

ZEOStopAll.bat

REM  This file will stop the ZEO server and 2 clients.  Add more clients if
necessary.

plonectl client2 stop
plonectl client1 stop
zeoserver_service stop

pause

ZEOAllRestart.bat

REM This file will restart the ZEO server and 2 clients.  Add more clients
if necessary.

plonectl client2 stop
plonectl client2 start
plonectl client1 stop
plonectl client1 start
zeoserver_service restart

pause
 
Batch.cfg

Here is a complete batch.cfg file that uses 2 ZEO clients:

############################################
#
# Buildout Configuration File for ZEO Plone
# -----------------------------------------
#
# After making changes in this configuration file,
# you should run bin/buildout to update the components.
# 
# ALWAYS back up all Plone/Zope data and components
# before changing configuration.
# 
# Running "bin/buildout" will update your installation,
# installing missing components as necessary.
# 
# Use "bin/buildout -n" to update many components here to the newest
# available releases.
# This will update the add-on products you've added in the eggs= lines.
# This will not, however, upgrade Plone itself (or anything else you've
# pinned with a version specification). To upgrade Plone itself, see the
# comments in "Plone Component Versions".
#
# Tutorial instructions for using zc.buildout for
# configuration management are available at:
# http://plone.org/documentation/tutorial/buildout
# Full details at http://pypi.python.org/pypi/zc.buildout
#
############################################

[buildout]

############################################
# Plone Component Versions
# ------------------------
# This version of the UnifiedInstaller has the components
# of Plone 4 preloaded so that it can install without
# an Internet connection.
# If you want to update, uncomment the "extends = http://..."; below,
# edit it to point to the current version URL,
# comment out the "extends = versions.cfg" line
# and run "bin/buildout -n" while attached to the Internet.
# Generally, you only want to do that as part
# of a planned migration.
#
extends-cache = buildout-cache/extends
extends = 
    base.cfg
    versions.cfg

############################################
# Ports
# -----
# Specify the ports on which your Zope installation
# will listen.
# ZEO Server
zeo-address = 127.0.0.1:8100
# Zope client 1
http-address = 8080
# Zope client 2
client2-address = 8081

############################################
# Eggs
# ----
# Add an indented line to the eggs section for any Python
# eggs or packages you wish to include.
#
eggs =
    Plone

# Alpha note: many of the products below are not yet
# adapted to Plone 4.
#
# Optional Functionality
# ----------------------
# Uncomment the indented lines to include these products.
# Documentation on all of them, along with many more products,
# is available at
# http://plone.org/products/
#
# Commonly used products:
# * LinguaPlone provides tools for building multi-lingual sites
# * Products.CacheSetup adds the "CacheFu" Plone speedup kit
# * PloneHelpCenter is a simple knowledge base
# * PloneFormGen provides through-the-web form building
#
#    Products.LinguaPlone
#    Products.CacheSetup
#    Products.PloneHelpCenter
#    Products.PloneFormGen
#
# Commonly used development tools:
# * Clouseau uses AJAX to provide a Python prompt inside Plone
# * DocFinderTab puts an object documentation inspector in the Zope
Management Interface
# * Gloworm is a Firebug-like viewlet inspector and customizer
# * plone.reload allows you to refresh Python code and ZCML configuration
#   without restarting Zope. Note that to use plone.reload, you'll also
#   need to uncomment the "zcml" entry for it below.
#
#    Products.Clouseau
#    Products.DocFinderTab
#    Products.Gloworm
#    plone.reload

############################################
# ZCML Slugs
# ----------
# Some eggs need ZCML slugs to tell Zope to
# use them. This is increasingly rare.
zcml =
#    plone.reload

    
############################################
# Development Eggs
# ----------------
# You can use paster to create "development eggs" to
# develop new products/themes. Put these in the src/
# directory.
# You will also need to add the egg names in the
# eggs section above, and may also need to add them
# to the zcml section.
#
# Provide the *paths* to the eggs you are developing here:
develop =
#    src/my.package


############################################
# Debug Mode
# ----------
# Change debug-mode to "on" to run in development mode.
# 
debug-mode = off
# Add-on developers should turn deprecation warnings on
deprecation-warnings = off
# change verbose-security to "on" for useful security errors while
developing
verbose-security = off

############################################
# Backup Directory
# ----------------
# Sets the target directory for the bin/backup and bin/snapshotbackup
# commands. Default is inside this project's var directory, but ideally
# this should be on a separate volume or backup server.
# 
backups-dir=${buildout:directory}/var

############################################
# Initial User
# ------------
# This is the user id and password that will be used to create the initial 
# user id that will allow you to log in and create a Plone site. This only
# sets the initial password; it will not allow you to change an already 
# existing password. If you change the admin password via the web interface,
# the one below will no longer be valid.
# If you find yourself locked out of your Zope/Python installation, you may
# add an emergency user via "bin/plonectl adduser".
user=admin:admin

############################################
# Parts Specification
# -------------------
# Specifies the components that should be included in the buildout.
# All the basics are in the base.cfg extension; you may add your
# own if you need them at the end of this file.
parts =
    zeoserver
    client1
    client2
    zopepy
    zopeskel
    backup
    unifiedinstaller
    controller
   productdistros

[zeoserver]
# Use this section to install and configure a Zope
# Enterprise Objects server.
# For options see http://pypi.python.org/pypi/plone.recipe.zeoserver
recipe = plone.recipe.zeoserver
zeo-address = ${buildout:zeo-address}
# Put the log, pid and socket files in var/zeoserver
zeo-log     = ${buildout:directory}/var/zeoserver/zeoserver.log
pid-file    = ${buildout:directory}/var/zeoserver/zeoserver.pid
socket-name = ${buildout:directory}/var/zeoserver/zeo.zdsock
blob-storage = ${buildout:directory}/var/blobstorage

[client1]
# Use this section to install and configure a Zope
# client instance.
# For options see http://pypi.python.org/pypi/plone.recipe.zope2instance
recipe = plone.recipe.zope2instance
zeo-client = true
zeo-address = ${zeoserver:zeo-address}
# The line below sets only the initial password. It will not change an
# existing password.
user = ${buildout:user}
http-address = ${buildout:http-address}
blob-storage = ${zeoserver:blob-storage}
shared-blob = on
# change debug-mode to "on" to run in development mode
debug-mode = ${buildout:debug-mode}
# change verbose-security to "on" for detailed security
# errors while developing
verbose-security = ${buildout:verbose-security}
deprecation-warnings = ${buildout:deprecation-warnings}
# Put the log, pid, lock files in var/client1
event-log = ${buildout:directory}/var/client1/event.log
z2-log    = ${buildout:directory}/var/client1/Z2.log
pid-file  = ${buildout:directory}/var/client1/client1.pid
lock-file = ${buildout:directory}/var/client1/client1.lock

# If you want Zope to know about any additional eggs, list them here.
# e.g. eggs = ${buildout:eggs} my.package
eggs =
    ${buildout:eggs}

# If you want to register ZCML slugs for any packages, list them here.
# e.g. zcml = my.package my.other.package
zcml = 
    ${buildout:zcml}
    
products =
    ${buildout:directory}/products

# You may also control the environment variables for the instance.
environment-vars =
    PYTHON_EGG_CACHE ${buildout:directory}/var/.python-eggs


[client2]
# a copy of client1, except adjusted address and var location
<= client1
http-address = ${buildout:client2-address}
event-log = ${buildout:directory}/var/client2/event.log
z2-log    = ${buildout:directory}/var/client2/Z2.log
pid-file  = ${buildout:directory}/var/client2/client2.pid
lock-file = ${buildout:directory}/var/client2/client2.lock

[versions]
Cheetah = 2.2.1
Paste = 1.7.4
PasteDeploy = 1.3.3
PasteScript = 1.7.3
ZopeSkel = 2.17
collective.buildout.cluster = 0.6
collective.recipe.backup = 1.4
distribute = 0.6.10
iniparse = 0.3.1
plone.controller = 1.8
plone.recipe.command = 1.1
plone.recipe.distros = 1.5
plone.recipe.unifiedinstaller = 4.0rc1
plone.recipe.zope2instance = 4.0.3





-- 
View this message in context: 
http://plone.293351.n2.nabble.com/buildout-cfg-for-Plone-4-0rc1-tp5449009p5504133.html
Sent from the Installation, Setup, Upgrades mailing list archive at Nabble.com.
_______________________________________________
Setup mailing list
[email protected]
http://lists.plone.org/mailman/listinfo/setup

Reply via email to