Package: plone.recipe.zope2instance
IntroductionThis recipe creates and configures a Zope instance in parts.
(Despite its name it nowadays only works for Zope 4+.) It also
installs a control script, which is like zopectl, in the bin/ directory.
The name of the control script is the name of the part in buildout.
By default various runtime and log information will be stored inside the var/
directory.You can use it with a part like this:[instance]
recipe = plone.recipe.zope2instance
user = admin:admin
http-address = 8080
eggs = my.distribution
zcml = my.distributionAttention!This release is targeted at Plone 5.2, ZODB 5, Zope 4 and Zope 5, and
Python 2.7 and 3.5-3.9. If you are using this recipe with earlier versions,
you should use one of the releases from the 4.x series.ContentsIntroductionOptionsCommon optionsTheme resourcesLocalesDevelopment optionsDirect storageBasic ZEO storageZEO authenticationRelStorageLoggingAdvanced logging options for WSGIExample (access log rotation based on file size)Example (rotating of event log after each day)Load non-setuptools compatible Python librariesAdvanced ZCML optionsAdvanced ZEO optionsAdvanced optionsThe generated control scriptWindowsThedebug,consoleandruncommandsDeveloping your own control script commandsKnown issuesReporting bugs or asking questionsChangelog6.12.2 (2023-09-26)6.12.1 (2023-09-08)6.12.0 (2023-01-31)6.11.0 (2022-03-23)6.10.2 (2021-10-07)6.10.1 (2021-09-01)6.10.0 (2021-05-11)6.9.0 (2021-03-22)6.8.3 (2021-02-17)6.8.2 (2021-02-16)6.8.1 (2020-10-30)6.8.0 (2020-09-26)6.7.5 (2020-08-16)6.7.4 (2020-08-14)6.7.3 (2020-07-30)6.7.2 (2020-06-28)6.7.1 (2020-04-21)6.7.0 (2020-03-09)6.6.0 (2020-02-18)6.5.1 (2019-11-25)6.5.0 (2019-10-12)6.4.0 (2019-08-29)6.3.0 (2019-07-06)6.2.2 (2019-06-19)6.2.1 (2019-05-10)6.2.0 (2019-05-04)6.1.5 (2019-04-24)6.1.4 (2019-03-21)6.1.4 (unreleased)6.1.3 (2019-03-04)6.1.2 (2019-03-03)6.1.1 (2019-02-08)6.1.0 (2018-12-28)6.0.0 (2018-11-08)5.0.1 (2018-11-04)5.0.0 (2018-01-27)4.3 (2017-06-28)4.2.22 (2016-10-05)4.2.21 (2016-05-26)4.2.20 (2016-03-29)4.2.19 (2016-02-15)4.2.18 (2015-07-27)4.2.17 (2015-04-29)4.2.16 (2014-11-01)4.2.15 (2014-09-07)4.2.14 (2014-03-02)4.2.13 (2013-07-28)4.2.12 (2013-06-04)4.2.11 (2013-05-23)4.2.10 (2013-03-05)4.2.9 (2013-02-10)4.2.8 (2013-01-17)4.2.7 (2013-01-13)4.2.6 (2012-12-09)4.2.5 (2012-09-20)4.2.4 (2012-08-29)4.2.3 (2012-08-04)4.2.2 (2012-07-02)4.2.1 (2012-04-15)4.2 (2011-11-24)4.1.9 - 2011-08-114.1.8 - 2011-07-174.1.7 - 2011-06-074.1.6 - 2011-06-014.1.5 - 2011-02-174.1.4 - 2011-01-014.1.3 - 2010-12-204.1.2 - 2010-12-054.1.1 - 2010-12-054.1 - 2010-12-044.0.5 - 2010-10-224.0.4 - 2010-09-094.0.3 - 2010-08-204.0.2 - 2010-08-044.0.1 - 2010-07-304.0.0 - 2010-07-214.0b2 - 2010-06-234.0b1 - 2010-04-044.0a4 - 2010-02-044.0a3 - 2010-01-244.0a2 - 2009-12-024.0a1 - 2009-11-143.6 (2009-10-11)3.5 (2009-09-05)3.4 (2009-08-12)3.3 - 2009-07-073.2 - 2009-04-023.1 (2009-03-15)3.0 (2009-02-27)2.9 (2009-02-26)2.8 (2008-12-05)2.7 (2008-11-18)2.6 (2008-10-22)2.5 (2008-09-22)2.4 (2008-07-15)2.3.1 (2008-06-10)2.3 (2008-06-06)2.2 (2008-06-06)2.1 (2008-06-05)2.0 (2008-05-29)1.9 (2008-04-15)1.8 (2008-04-05)1.7 (2008-03-31)1.6 (2008-03-27)1.5 (2008-02-29)1.4 (2008-02-23)1.31.21.11.00.90.80.70.60.50.40.30.20.1OptionsCommon optionseggsThe list of distributions you want to make available to the instance.zcmlInstall ZCML slugs for the distributions listed, separated by whitespace. You
can specify the type of slug by appending ‘-’ and the type of slug you want
to create. Some examples:my.distributionmy.distribution-meta.http-addressSet the address of the HTTP server.
Can be either a port or a socket address.
Defaults to 0.0.0.0:8080.ip-addressThe default IP address on which Zope’s various server protocol
implementations will listen for requests. If this is unset, Zope will listen
on all IP addresses supported by the machine. This directive can be
overridden on a per-server basis in the servers section. Defaults to not
setting an ip-address. Used for ZServer only, not WSGI.threadsSpecify the number of worker threads used to service requests.
The default is 4 for WSGI (since this is the waitress default) and 2 for ZServer.zodb-cache-sizeSet the ZODB cache size, i.e. the number of objects which the ZODB cache
will try to hold. Defaults to 30000.zserver-threadsDeprecated, usethreadsinstead.
Specify the number of threads that Zope’s ZServer web server will use to
service requests. The recipes default is 2. Used for ZServer only, not WSGI.environment-varsDefine arbitrary key-value pairs for use as environment variables during
Zope’s run cycle. Example:environment-vars =
  TZ US/Eastern
  zope_i18n_allowed_languages en
  zope_i18n_compile_mo_files trueinitializationSpecify some Python initialization code to include within the generatedsitecustomize.pyscript (Buildout >= 1.5) or within the instance script
(Buildout < 1.5). This is very limited. In particular, be aware that leading
whitespace is stripped from the code given.added in version 4.2.14wsgiBy default this recipe creates a Python script that useswaitressas a
WSGI server. When running Python 2 you can disable WSGI and use ZServer by
settingwsgi = offand including ZServer in theeggsspecification
list. Example:wsgi = off
eggs =
  ...
  ZServerYou can use other PasteDeploy-compatible WSGI servers by passing a path
to a WSGI configuration file here and including the WSGI server’s egg in theeggsspecification. Example:wsgi = ${buildout:directory}/etc/gunicorn.ini
eggs =
  ...
  gunicornThe WSGI configuration file will not be created for you in this case,
unlike the built-inwaitresssupport. You have to provide it yourself.max-request-body-sizeSpecify the maximum request body size in bytes
The default is 1073741824 (since this is the waitress default)Theme resourcesPlease refer tohttps://pypi.org/project/plone.resourcefor more
details and setup instructions.resourcesSpecify a central resource directory. Example:resources = ${buildout:directory}/resourcesLocaleslocalesSpecify a locales directory. Example:locales = ${buildout:directory}/localesThis registers a locales directory with extra or different translations.
If you want to override a few translations from theplonedomain in the
English language, you can add aen/LC_MESSAGES/plone.pofile in this
directory, with standard headers at the top, followed by something like
this:#. Default: "You are here:"
msgid "you_are_here"
msgstr "You are very welcome here:"Translations for other message ids are not affected and will continue
to work.Development optionsverbose-securitySet toonto turn on verbose security (and switch to the Python security
implementation). Defaults tooff(and the C security implementation).debug-exceptionsWSGI only: set toonto disable exception views includingstandard_error_message. Exceptions other thanUnauthorizedorConflictErrorcan then travel up into the WSGI stack. Use this option
if you want more convenient error debugging offered by WSGI middleware
such as thewerkzeug debugger. See theZope
WSGI documentationfor
examples.profileSet toonenablesrepoze.profile.
Defaults tooff,
If switched on there are further options prefixed withprofile_to configure it as below.
You will need to add therepoze.profilepackage, either by adding it to your eggs section directly or by using the extraplone.recipe.zope2instance[profile].profile_log_filenameFilename of the raw profile data.
Default toprofile-SECTIONNAME.raw.
This file contains the raw profile data for further analysis.profile_cachegrind_filenameIf the packagepyprof2calltreeis installed, another file is written.
It is meant for consumation with any cachegrind compatible application.
Defaults tocachegrind.out.SECTIONNAME.profile_discard_first_requestDefaults totrue.
Seerepoze.profile docsfor details.profile_pathDefaults to/__profile__.
The path for through the web access to the last profiled request.profile_flush_at_shutdownDefaults totrue.
Seerepoze.profile docsfor details.profile_unwindDefaults tofalse.
Seerepoze.profile docsfor details.Direct storageIf you have only one application process, it can open the database files
directly without running a database server process.file-storageThe filename where the ZODB data file will be stored.
Defaults to${buildout:directory}/var/filestorage/Data.fs.blob-storageThe name of the directory where the ZODB blob data will be stored, defaults
to${buildout:directory}/var/blobstorage.Basic ZEO storageIf you want multiple application processes you need to run a separate
database server process and connect to it, either via ZEO or RelStorage.zeo-addressSet the address of the ZEO server. Defaults to 8100. You can set
more than one address (white space delimited). Alternative addresses will
be used if the primary address is down.zeo-clientSet to ‘on’ to make this instance a ZEO client. In this case, setting the
zeo-address option is required, and the file-storage option has no effect.
To set up a ZEO server, you can use the plone.recipe.zeoserver recipe.
Defaults to ‘off’.blob-storageThe location of the blob zeocache, defaults tovar/blobcache. Ifshared-blobis on it defaults to${buildout:directory}/var/blobstorage.shared-blobDefaults tooff. Set this toonif the ZEO server and the instance have
access to the same directory. Either by being on the same physical machine or
by virtue of a network file system like NFS. Make sure this instancesblob-storageis set to the same directory used for the ZEO serversblob-storage. In this case the instance will not stream the blob file
through the ZEO connection, but just send the information of the file
location to the ZEO server, resulting in faster execution and less memory
overhead.zeo-client-read-only-fallbackA flag indicating whether a read-only remote storage should be acceptable as
a fallback when no writable storages are available. Defaults to false.read-onlySet zeo client as read onlyadded in version 4.2.12ZEO authenticationYou need to activate ZEO auth on the server side as well, for this to work.
Without this anyone that can connect to the database servers socket can read
and write arbitrary data.zeo-usernameEnable ZEO authentication and use the given username when accessing the
ZEO server. It is obligatory to also specify a zeo-password.zeo-passwordPassword to use when connecting to a ZEO server with authentication
enabled.zeo-realmAuthentication realm to use when authentication with a ZEO server. Defaults
to ‘ZEO’.RelStoragePlease refer tohttps://pypi.org/project/RelStoragefor more details
and setup instructions.rel-storageAllows to set a RelStorage instead of a FileStorage.Contains settings separated by newlines, with these values:type: any database type supported (postgresql, oracle, mysql)RelStorage specific keys, likecache-serversandpoll-intervalall other keys are passed on to the database-specific RelStorage adapter.Example:rel-storage =
  type oracle
  dsn (DESCRIPTION=(ADDRESS=(HOST=s01))(CONNECT_DATA=(SERVICE_NAME=d01)))
  user tarek
  password secretLoggingIn most cases you don’t need to adjust any of this, you might want to adjust
log levels or configuremailinglogger.event-logThe filename of the event log. Defaults to ${buildout:directory}/var/log/${partname}.log
Setting this value to ‘disable’ will make the <eventlog> section to be omitted,
disabling logging events by default to a .log file.event-log-levelSet the level of the console output for the event log. Level may be any of
CRITICAL, ERROR, WARN, INFO, DEBUG, or ALL. Defaults to INFO.event-log-max-sizeMaximum size of event log file. Enables log rotation.
Used for ZServer only, not WSGI.event-log-old-filesNumber of previous log files to retain when log rotation is enabled.
Defaults to 1. Used for ZServer only, not WSGI.event-log-customA custom section for the eventlog, to be able to use another
event logger thanlogfile. Used for ZServer only, not WSGI.mailingloggerA mailinglogger section added into the event log.
Used for ZServer only, not WSGI. Example snippet:<mailing-logger>
  level error
  flood-level 10
  smtp-server smtp.mydomain.com
  from logger@mydomain.com
  to errors@mydomain.com
  subject [My domain error] [%(hostname)s] %(line)s
</mailing-logger>You will need to addmailingloggerto your buildout’s egg section to make this work.access-log, z2-logThe filename for the Z2 access log. Defaults to var/log/${partname}-Z2.log
(var/log/${partname}-access.log) for WSGI).
You can disable access logging by setting this value to ‘disable’.
For ZServer this will omit the<logger access>section inzope.conf.
For WSGI, the logging handler will be aNullHandler.access-log-level, z2-log-levelSet the log level for the access log. Level may be any of CRITICAL, ERROR,
WARN, INFO, DEBUG, or ALL. Defaults to WARN (INFO for WSGI).access-log-max-sizeMaximum size of access log file. Enables log rotation.
Used for ZServer only, not WSGI.access-log-old-filesNumber of previous log files to retain when log rotation is enabled.
Defaults to 1. Used for ZServer only, not WSGI.access-log-customLikeevent-log-custom, a custom section for the access logger, to be able
to use another event logger thanlogfile. Used for ZServer only, not WSGI.sentry_dsnProvide a Sentry DSN here to enable basic Sentry logging documented
inhttps://docs.sentry.io/platforms/python/logging/. You will need to add the
Python Sentry SDK, either by adding it to your eggs section directly or by addingplone.recipe.zope2instance[sentry].
Available for WSGI only.sentry_levelSet the logging level for Sentry breadcrumbs.
Available for WSGI only.sentry_event_levelSet the logging level for Sentry events.
Available for WSGI only.sentry_ignoreSet the (space separated list of) logger names that are ignored by Sentry.
Available for WSGI only.Advanced logging options for WSGIFor more complex logging configuration, the zope2instance recipe exposes the
underlayinglogging.handlersfunctionality through theaccess-log-handlerandevent-log-handlerconfiguration options. This allows you to configure an
arbitrary logging handler for Python as defined inhere.The supplementary optionsevent-log-args,event-log-kwargsandaccess-log-args,access-log-kwargscan be used for passing positional and
keyword arguments to the constructor of the underlaying handler.access-log-handlerThe (dotted) name of an importable Python logging handler likelogging.handlers.RotatingFileHandler.Default:FileHandleraccess-log-argsA python tuple which usually refers to the logging filename and opening mode
of the file like(“access.log”, “a”).  Note that you a Python tuple with
only one element (e.g. only the filename) must have a trailing comma like(“access.log”, )Theaccess-log-argsis used to specify the positional
parameters for the logging handler configured throughaccess-log-handler.Default:(r”access.log”, “a”)access-log-kwargsA python dictionary used for passing keyword argument for the logging handler
configured throughaccess-log-handlere.g.{“when”: “h”, “interval”: 1}.Default:{}event-log-handlerSame asaccess-log-handlerbut for the configuration of the event log of Plone.event-log-argsSame asaccess-log-argsbut for the configuration of the event log of Plone.event-log-kwargsSame asaccess-log-kwargsbut for the configuration of the event log of Plone.Example (access log rotation based on file size)This example uses aRotatingFileHandlerhttps://docs.python.org/3/library/logging.handlers.html#rotatingfilehandlerwhich rotates the access log when it becomes larger than 10 MB while keeping seven copies:access-log-handler = logging.handlers.RotatingFileHandler
access-log-args  = (r"access.log", "a")
access-log-kwargs = {"maxBytes": 10000000, "backupCount": 7}Example (rotating of event log after each day)This example uses aTimedRotatingFileHandlerhttps://docs.python.org/3/library/logging.handlers.html#timedrotatingfilehandlerfor rotating the event log every 24 hours or one day:event-log-handler = logging.handlers.TimedRotatingFileHandler
event-log-args = (r"event.log", )
event-log-kwargs = {"when": "D", "interval": 1}Load non-setuptools compatible Python librariesproductsA list of paths where Zope 2 products are installed. The first path takes
precedence in case the same product is found in more than one directory.
Zope 2 products are deprecated and won’t work any longer in a future version
of Zope/Plone.extra-pathsA list of paths where additional Python packages are installed. The paths
are searched in the given order after all egg and products paths.Advanced ZCML optionssite-zcmlIf you want a customsite.zcmlfile, put its content here. If this option
is used thezcmlandzcml-additionaloptions are ignored.zcml-additionalExtra ZCML statements that should be included in the generatedsite.zcmlfile.Advanced ZEO optionszeo-client-cache-sizeSet the size of the ZEO client cache. Defaults to ‘128MB’. The ZEO cache is
a disk based cache shared between application threads. It is stored either in
temporary files or, in case you activate persistent cache files with the
optionclient(see below), in the folder designated by thezeo-varoption.zeo-client-clientSet the persistent cache name that is used to construct the cache
filenames. This enables the ZEO cache to persist across application restarts.
Persistent cache files are disabled by default.zeo-client-blob-cache-sizeSet the maximum size of the ZEO blob cache, in bytes.  If not set, then
the cache size isn’t checked and the blob directory will grow without bound.zeo-client-blob-cache-size-checkSet the ZEO check size as percent ofzeo-client-blob-cache-size(for
example,10for 10%). The ZEO cache size will be checked when this many
bytes have been loaded into the cache. Defaults to 10% of the blob cache
size. This option is ignored ifshared-blobis enabled.zeo-client-drop-cache-rather-verifyIndicates that the cache should be dropped rather than verified when
the verification optimization is not available (e.g. when the ZEO server
restarted). Defaults to ‘False’.zeo-storageSet the storage number of the ZEO storage. Defaults to ‘1’.zeo-varUsed in the ZEO storage snippets to configure the ZEO var folder, which
is used to store persistent ZEO client cache files. Defaults to the system
temporary folder.Advanced optionswsgi-ini-templateBy defaultplone.recipe.zope2instancesuses a hard-coded template for the
generated WSGI configuration inparts/<partname>/etc/wsgi.ini. The template
is defined aswsgi_ini_templatevariable within therecipe.pyfile.You can override the template with a custom template file using this option.Example:wsgi-ini-template = /path/to/wsgi_template.iniThe available variables for variable substition can be found within the existing template (see above).asyncore-use-pollBy defaultfalse. If you want thewaitress.asyncore.loopflag to use poll()
instead of the default select() set totrue.before-storageWraps the base storage in a “before storage” which sets it in
read-only mode from the time given (or “now” for the current time).This option is normally used together with demo-storage for a
normally running site in order for changes to be made to the
database.client-homeSets the clienthome for the generated instance.
Defaults to ${buildout:directory}/var/<name of the section>.clear-untrusted-proxy-headersThis tells Waitress to remove any untrusted proxy headers
(“Forwarded”, “X-Forwarded-For”, “X-Forwarded-By”,
“X-Forwarded-Host”, “X-Forwarded-Port”, “X-Forwarded-Proto”).
The default in waitress 1 is false, but waitress 2 changes this to true.
We explicitly default to false.
When you set it to true, you may need to set otherwsgi.inioptions liketrusted_proxy_headersandtrusted_proxy.
Setting those is not supported by the recipe yet.
Used for WSGI only, not ZServer.default-zpublisher-encodingThis controls what character set is used to encode unicode data that reaches
ZPublisher without any other specified encoding. This defaults to ‘utf-8’.
Plone requires this to be set toutf-8.demo-storageIf ‘on’ it enables the demo storage. By default, this is a
memory-based storage option; changes are not persisted (see the
demo-file-storage option to use a persistent storage for changes
made during the demonstration).To use with a base storage option configured with a blob-storage,
you must set a demo-blob-storage.demo-file-storageIf provided, the filename where the ZODB data file for changes
committed during a demonstration will be stored.demo-blob-storageIf provided, the name of the directory where demonstration ZODB blob
data will be stored.This storage may be connected to a demonstration file storage, or
used with the default memory-based demo storage (in this case you
might want to use a temporary directory).storage-wrapperTemplate for arbitrary configuration to be wrapped around the main storage.
%s will be replaced with the existing storage configuration.effective-userThe name of the effective user for the Zope process. Defaults to not setting
an effective user.enable-product-installationEnable the persistent product registry by setting this toon. By default
the registry is turnedoff. Enabling the registry is deprecated.ftp-addressGive a port for the FTP server. This enables the FTP server.
Used for ZServer only, not WSGI.http-force-connection-closeSet toonto enforce Zope to setConnection: close header.
This is useful if for example a 304 leaves the connection open with
Varnish in front and Varnish tries to reuse the connection.http-fast-listenSet tooffto defer opening of the HTTP socket until the end of the Zope
startup phase. Defaults to on.icp-addressGive a port for the ICP server. This enables the ICP server.
Used for ZServer only, not WSGI.import-directoryUsed to configure the import directory for instance.
Defaults to<client-home>/import.port-baseOffset applied to the port numbers used for ZServer configurations. For
example, if the http-server port is 8080 and the port-base is 1000, the HTTP
server will listen on port 9080. This makes it easy to change the complete
set of ports used by a Zope server process. Zope defaults to 0.python-check-intervalAn integer telling the Python interpreter to check for asynchronous events
every number of instructions. This affects how often thread switches occur.
Defaults to 1000.relative-pathsSet this totrueto make the generated scripts use relative
paths. You can also enable this in the[buildout]section.scriptsAdd this parameter with no arguments to suppress script generation.
Otherwise (i.e. without this parameter), scripts for packages added
to theeggsparameter will be generated. You may also configure
per package. E.g.:[instance]
recipe = plone.recipe.zope2instance
eggs =
  Plone
  mr.migrator
  my.package
scripts = my_package_scriptIn the above example, onlymy_package_scriptwill be generated. Keep in
mind that the egg containing the script (my.packagein the example) must
be listed explicitly in the eggs option, even if it is a dependency of an
already listed egg.template-cacheUsed to configure the cache for page-template files. Chameleon will write
compile page-templates into this directory and use it as a cache.
Seehttps://chameleon.readthedocs.io/en/latest/configuration.htmlfor more info.
Valid options are off or on or a directory-location.
Defaults to ${buildout:directory}/var/cache (it also confirms to what var is set to).varUsed to configure the base directory for all things going into var.
Defaults to ${buildout:directory}/var.webdav-addressGive a port for the WebDAV server.  This enables the WebDAV server.
Used for ZServer only, not WSGI.webdav-force-connection-closeValid options are off and on. Defaults to off.
Used for ZServer only, not WSGI.pipelineThe main application pipeline served by the wsgi server.
By default the pipeline is:translogger
egg:Zope#httpexceptions
zopeThetransloggerline in the pipeline will be removed
ifz2-logis set todisabledor if it is not set
andaccess-logis set todisabled(case insensitive).
Used for WSGI only, not ZServer.zlib-storageAdds support for file compression on a file storage database. The
option accepts the values ‘active’ (compress new records) or
‘passive’ (do not compress new records). Both options support
already compressed records.You can use the ‘passive’ setting while you prepare a number of
connected clients for compressed records.zodb-cache-size-bytesSet the ZODB cache sizes in bytes. This feature is still experimental.zodb-temporary-storageIf given Zope’s default temporary storage definition will be replaced by
the lines of this parameter. If set to “off” or “false”, no temporary storage
definition will be created. This prevents startup issues for basic Zope 4
sites as it does not ship with the required packages by default anymore.zope-confA relative or absolute path to azope.conffile. If this is given, many of
the options in the recipe will be ignored.zope-conf-importsYou can define custom sections within zope.conf using the ZConfig API.
But, in order for Zope to understand your custom sections, you’ll have to
import the python packages that define these custom sections using%importsyntax.Example:zope-conf-imports =
  mailinglogger
  eea.grayloggerzope-conf-additionalGive additional lines tozope.conf. Make sure you indent any lines after
the one with the parameter.Example:zope-conf-additional =
  locale fr_FR
  http-realm Slipknotzopectl-umaskManually set the umask for the zopectl process.Example:zopectl-umask = 002http-header-max-lengthManually set the maximum size of received HTTP header being processed by Zope.
The request is discarded and considered as a DoS attack if the header size exceeds
this limit. Default: 8192. Used for ZServer only, not WSGI.Example:http-header-max-length = 16384The generated control scriptWindowsOn the windows platform thebin/instancescript as described below will not be generated, because it uses a Unix specific implementation.To run Plone start it with:.\bin\runwsgi.exe -v .\parts\etc\wsgi.iniOr for development in debug mode use:.\bin\runwsgi.exe -v .\parts\etc\wsgi.iniThe documentation for the extended Zope control script below does not apply.Thedebug,consoleandruncommandsThe extended Zope control script installed by this recipe, usuallybin/instanceby convention, offers adebugcommand and anotherruncommand.  Thedebugcommand starts an interactive Python
prompt with the Zope application available via theappname.
Similarly, theruncommand accepts a Python script as an argument
that will be run under the same conditions.These commands have also been extended to set up a more complete
environment. Specifically, these commands set up a REQUEST, log in
the AccessControl.SpecialUsers.system user, and may traverse to an
object, such as a CMF portal. This environment set up is controlled
with following options:-R/--no-request -- do not set up a REQUEST.
-L/--no-login -- do not login the system user.
-O/--object-path <path> -- Traverse to <path> from the app
                           and make available as `obj`.Note that these options must come before the script name,
e.g.bin/instance -RLOPlone/front-page debugTheconsolecommand is similar to the fg command, but it does not
create a subprocess to start up Zope. This is useful for two
use cases. First, the supervisor program, to supervise long running
processes like a Zope, require the process not to fork away, so that
supervisor can control it.
Second, IDEs like WingIDE and PyCharm support debugging running
processes from within. For this to work, the process should also
not fork away.Developing your own control script commandsThird-party distributions may add additional commands to the control script by
installing a ‘plone.recipe.zope2instance.ctl’ entry point. For example,
an egg called MyDist could include a module called mymodule with the
following custom command:def foo(self, *args)
    """Help message here"""
    print 'foo'It would then install the foo method as a command for the control script using
the following entry point configuration in setup.py:entry_points="""
[plone.recipe.zope2instance.ctl]
foo = mymodule:foo
"""This would allow invoking the foo method by runningbin/instance foo(assuming the instance control script was installed by a buildout part
calledinstance.) The entry point is invoked with the following
parameters:selfAn instance of plone.recipe.zope2instance.ctl.AdjustedZopeCmd.argsAny additional arguments that were passed on the command line.Known issuestherestartcommand will not function reliably if you run the buildout
while the Zope instance is still running. In those cases, always usestopfollowed bystartto restart the Zope instance.Reporting bugs or asking questionsPlease use the bug tracker in this repository athttps://github.com/plone/plone.recipe.zope2instance/issuesfor questions and
bug reports.Changelog6.12.2 (2023-09-26)New features:Adddos_protectionconfig.
With Zope 5.8.4+ you may getzExceptions.BadRequest: data exceeds memory limitwhen uploading an image or file of more than 1 MB.
To increase this limit, you can add this in your instance recipe, and choose your own limit:zope-conf-additional =
  <dos_protection>
    form-memory-limit 4MB
  </dos_protection>[@mamico] (#191)6.12.1 (2023-09-08)Documentation:Update README: forRotatingFileHandlermaxCountis not a valid keyword argument.
UsebackupCount.
[gforcada] (#190)6.12.0 (2023-01-31)New features:Add new optionasyncore_use_pollto waitress config file.
[petschki] (#189)6.11.0 (2022-03-23)New features:By default, do not create a tempstorage on Plone 6.
Seeissue 180.
[maurits] (#180)6.10.2 (2021-10-07)Bug fixes:Fixpython-dotenvdependency for Python 2 compatibility. [dataflake] (#181)6.10.1 (2021-09-01)Bug fixes:Fix resource warning in tests.  [icemac] (#176)6.10.0 (2021-05-11)New features:Allow to customize the WSGI pipeline [ale-rt, jensens] (#116)Add repoze.profile profiling middleware support [jensens] (#129)Bug fixes:Enable both weekly and manual builds for GitHub Actions [jugmac00] (#169)Fix unsupported syntax in the requirements files which prevented to evaluate
the specified constraints during test runs [jugmac00]. (#171)Applied code style black and isort with Plone/black rules, includes tox/GH-Actions  [jensens] (#175)6.9.0 (2021-03-22)New features:Make any ctl script python-env aware
[sneridagh] (#162)Added support for Python 3.9 and restored support for Python 3.5 (needed for Zope 4)
[dataflake] (#164)Bug fixes:Fixed$PYTHONSTARTUPfile support for thedebugcommand under Python 3
[dataflake] (#167)6.8.3 (2021-02-17)Bug fixes:Fix windowswsgi.inito have a configurable listen address.
Added missing WSGI config options for windows.
[jensens] (#161)6.8.2 (2021-02-16)Bug fixes:Restored ability to use own explicit version of zodb-temporary-storage.
[maurits] (#93)6.8.1 (2020-10-30)Bug fixes:Properly disable access-log for WSGI.
[tschorr] (#159)6.8.0 (2020-09-26)New features:Added optionclear-untrusted-proxy-headers, with default false.
See waitress documentation onclear_untrusted_proxy_headers.
Fixes adeprecation warning.
[maurits] (#142)Added optionmax-request-body-size, with default 1073741824.
See waitress documentation onmax_request_body_size.
[mpeeters] (#155)Bug fixes:Add GitHub Actions to project.
Run tests there in a matrix against Zope 4 and Zope 5, Windows and Linux, Python 27, 3.6, 3.7 and 3.8.
Testing Python 2.7 on Windows is skipped.
Refactor tox test setup slightly, do not use tox on GitHub.
Split up tests in smaller easier to maintain files.
Fix tests to run on Windows without tocuhing the recipe code (the Windows code is not perfect right now, but it test are reflecting current state).
This primary includes respecting path-handling (backslash vs slash), conditional instance generation and differences in wsgi configurations.
Also resolves “unclosed files” warnings.
Reflect Zope 5 and so Plone 6.0 support in trove classifiers.
[jensens] (#150)6.7.5 (2020-08-16)Bug fixes:Generate workingwsgi.inion windows.
Do not generate instance script.
Need to use.\bin\runwsgi.exe-dv.\parts\etc\wsgi.inion windows to start.
[jensens] (#151)6.7.4 (2020-08-14)Bug fixes:Fix “SyntaxError” on windows: Generate raw strings in order to allow backslashes in log file paths.
[jensens] (#145)Fixed an issue that prevented the instance to start
when http-address has multiple entries and http-fast-listen is on
[ale-rt] (#146)WSGI instances do not fail to start when http-address is equal to a list of ports [ale-rt] (#148)6.7.3 (2020-07-30)Bug fixes:Set the default for the http-fast-listen to on to match the documentation [ale-rt] (#71)6.7.2 (2020-06-28)Bug fixes:Fix flake8 and fix insertingCHAMELEON_CACHEin some cases.  [ale-rt] (#139)6.7.1 (2020-04-21)Bug fixes:Minor packaging updates. (#1)6.7.0 (2020-03-09)New features:added relstorage w/ sqlite support
[mamico] (#132)6.6.0 (2020-02-18)New features:Support for Zope optionswebdav-source-portandenable-ms-public-header.
[dataflake] (#134)6.5.1 (2019-11-25)Bug fixes:for initialization option, string format works for instance console script not for the others
[mamico] (#130)6.5.0 (2019-10-12)New features:addedwsgi-ini-templateoption for specifying a custom template for the generation of thewsgi.iniconfiguration file [ajung] (119-1)advanced WSGI logging configuration options for specifying arbitrary logging handlers for event and access log [ajung] (119-2)added documentation and examples for advanced WSGI logger configuration [ajung] (119-3)Bug fixes:Add documentation forthreadsoption. (#126)Fix documentation for http-address option. (#127)6.4.0 (2019-08-29)New features:Add Sentry support by adding a new filter to the WSGI pipeline. (#124)Bug fixes:Fixed a deprecation warning when importingmakerequestfromTesting.ZopeTestCase.utils.
This also fixes a side effect which can bite you if you rely on theZOPETESTCASEenvironment variable, only being set to1during test runs. (#122)6.3.0 (2019-07-06)New features:Enable CHAMELEON_CACHE by default. Seehttps://github.com/plone/Products.CMFPlone/issues/2898[pbauer] (#118)6.2.2 (2019-06-19)Bug fixes:Fix startup issues by adding support for new Zope configuration keyszmi-bookmarkable-urlsandpid-filename(#112)6.2.1 (2019-05-10)Bug fixes:Clarify documentation for thescriptsoption (#29)Fix handling of ZEO client persistent cache and storage settings (#30)Try to look up a suitable log file for thelogtailverb (#85)Fixed invalid import path for DeprecationWarning forwarnfilter(#105)Document whererestartcan break in the project README (#107)Prevent constantwaitress.queuelog messages on the console and just send
them to the event log. (#110)6.2.0 (2019-05-04)New features:Add support for the newdebug-exceptionsflag in Zope (#100)6.1.5 (2019-04-24)New features:Add the ability to specify a custom WSGI configuration file (#90)Bug fixes:Enable socket reuse to prevent startup errors when running in the foreground (#86)Add ability to turn offzodb-temporary-storageto prevent Zope 4 breakage (#87)Fix WSGI access log formatting configuration (#88)Fix ZServer instance creation with better WSGI flag checking (#95)6.1.4 (2019-03-21)Bug fixes:Fix zdaemon socket location when it’s not passed on the command line (#79). [tschorr] (#79)remove unknown keyeffective-userfor wsgi configuration (#80)
[petschki] (#80)Use built-in function next [erral] (#82)6.1.4 (unreleased)Bug fixes:restore http-fast-listen for waitress (#71)
[tschorr]6.1.3 (2019-03-04)Bug fixes:Restore log files for waitress. [tschorr] (#76)6.1.2 (2019-03-03)Breaking changes:Change the default to enable wsgi unless running Python 2 and setting
wsgi=off. Seehttps://github.com/plone/Products.CMFPlone/issues/2763[pbauer]
(#73)6.1.1 (2019-02-08)Bug fixes:log level for Plone WSGI logger changed to INFO making the logging less
verbose [ajung] (#66)Improve debugging of run scripts by providing the source code for the
debugger. [icemac] (#68)Use correct debug switch for WSGI. (Products.CMFPlone #2719) Display warnings
in debug mode with WSGI (override with PYTHONWARNINGS). (Products.CMFPlone
#2724) [tschorr]
(#69)Fix Flake8 issues in the code. [icemac] (#72)6.1.0 (2018-12-28)New features:Add new option ‘threads’ used to specify the number of workers for both
waitress + ZServer, and a deprecation warning for ‘zserver-threads’.
[tschorr]Add support for Python 3.7 while dropping official support for Python 3.5.
(#60)Bug fixes:Make comments in zcml values work, even if not starting at the beginning of the line;
before, we had a confusing error message. Fixes #46
[tobiasherp]Fixed serving Plone with WSGI when ZServer is also installed on Python 2.
[davisagli]Removepathoption from zope.conf generated when using WSGI as it is no longer understood.
[icemac]Removedeprecation-warningsoption from zope.conf generated
when using WSGI as it is no longer understood.
[davisagli]6.0.0 (2018-11-08)Breaking changes:For WSGI-based instances, generate a zdaemon-based instance script
that works similarly to ZServer-based instances, instead of a
script that only handles running the WSGI server.
[davisagli]5.0.1 (2018-11-04)Bug fixes:Super user password created on Python 3 can now be read by Zope.Fix WSGI initialization
[tschorr]Move Recipe from __init__.py to a new module to get rid of the dependency on
zc.recipe.egg in control scripts
[tschorr]Make use of changes to Zope WSGI logging
(#280,#276),
use Zope2 WSGI startup code.
[tschorr]Fix the tests on Python 3 when running via tox or TravisCI.
[icemac]5.0.0 (2018-01-27)Breaking changes:Require at least ZODB 5 and Zope 4.0b1.Drop support for Plone 4.3, 5.0, and 5.1.New features:Add wsgi support
[tschorr]Add support for Python 3.5 and 3.6.Bug fixes:Python 3 compatibility with sixer
[ale-rt]Fix import. zopectl moved to ZServer
[pbauer]4.3 (2017-06-28)New features:Addedstorage-wrapperoption to wrap storage configuration.
[davisagli]4.2.22 (2016-10-05)Bug fixes:Add coding headers on python files.
[gforcada]4.2.21 (2016-05-26)Fixes:Fix #23: “TypeError: <lambda>() takes no arguments (1 given)” on ./bin/instance start
[jensens]4.2.20 (2016-03-29)Fixes:Revert changes made on previous release.
The way zopectl and this recipe handle commands
is totally different.
[gforcada]4.2.19 (2016-02-15)New:Handle commands registered for zopectl as well.
Up to now they were handled but not displayed at all
(i.e. in help and descriptions).https://github.com/plone/plone.recipe.zope2instance/issues/18[gforcada]4.2.18 (2015-07-27)Allow to disable logs.  Setz2-logto the valuedisableto
disable the Z2 access log.  Setevent-logto the valuedisableto disable the event log.
[frapell]4.2.17 (2015-04-29)Addedzope-conf-importsoption to easily import ZConfig components
within zope.conf using %import syntax.
[avoinea]4.2.16 (2014-11-01)If ‘’demo-file-storage’ is set, but ‘demo-storage’ is off, do not
raise an exception
[frapell]Add documentation for console command, for supervisor and IDE
debugging
[do3cc]4.2.15 (2014-09-07)Always wrap contents of zcml-additional with a <configure /> node.
This makes it possible to use += assignments with zcml-additional.
[lgraf]Add support for multiple zeo servers
[ivant]4.2.14 (2014-03-02)Link to zope.conf is now relativitize if option relative-paths is true.
[bsuttor]Added ability to setinitializationto configure Python
code to run on instance start up.
[davidjb]added support for http-header-max-length
[alecghica]4.2.13 (2013-07-28)adding support for zopectl umask
[hman]4.2.12 (2013-06-04)be able to set zeo client as read only from buildout configuration
[vangheem]4.2.11 (2013-05-23)When creating the blobstorage dir, make it only readable for the
current user, otherwise you get a ZODB warning on startup.  This
uses code from the ZODB, which does the same when Zope starts up and
the blobstorage directory does not exist yet.
[maurits]Fixed check for empty custom_access_event_log and custom_event_log.
[alecghica]4.2.10 (2013-03-05)Recipe would fail if eggs are stored in readonly cache. Don’t copy
permissions from the egg.
[garbas]4.2.9 (2013-02-10)Add trove classifiers to note Python version compatibility.
[hannosch]4.2.8 (2013-01-17)Pass python flags to Zope interpreter as well. This prevents the debug
command from exiting directly.
[wichert]4.2.7 (2013-01-13)Load PYTHONSTARTUP if defined when running the debug command.
[mj]4.2.6 (2012-12-09)Use interpreter script instead of setting PYTHONPATH.  Fixes Windows
“the environment variable is longer than 32767 bytes” error.
[rossp]Make the zope.conf http-server optional by setting http-address to
an empty string.  Useful for configurations used under an external
server such as a WSGI deployment.
[rossp]4.2.5 (2012-09-20)Added event and access log rotation capability.
[sureshvv]4.2.4 (2012-08-29)Expose ‘drop-cache-rather-verify’ ZEO client option which indicates that
the cache should be dropped rather than verified when the verification
optimization is not available (e.g. when the ZEO server restarted).
[runyaga]Strip all empty lines out of zeo.conf to provide more compact view.
[runyaga]4.2.3 (2012-08-04)Fix zcml load order of the optional locales directory. Translation overrides
need to be loaded first.
[sunew]4.2.2 (2012-07-02)Changed client connection cache defaults. We specify a cache size of 30000
instead of 10000.
[hvelarde]Add newlocalesoption for specifying a locales directory with
extra or different translations.
[maurits]4.2.1 (2012-04-15)Add control scriptdebugandrunsupport to set up a REQUEST,
log in the AccessControl.SpecialUsers.system user, and traverse to
an object, such as a CMF portal.
[rpatterson]4.2 (2011-11-24)Add support for a changes storage for demo storage (in addition to
the base storage). Local file and blob storage is supported.
[malthe]Add support for before storage (via thezc.beforestoragepackage).
[malthe]Make script suppression optional (via emptyscriptsparameter). Otherwise,
scripts for packages listed ineggsparameter will be generated.
[aclark]Support all RelStorage options, even future options. Used a simple pattern
to recognize where options should be placed: any option name containing a
dash is a generic option; the rest (except “name”) are database-specific.
[hathawsh]4.1.9 - 2011-08-11No longer rely onsoftwarehomein startup script.
[hannosch]4.1.8 - 2011-07-17Add preliminary support for Zope 4.0, by re-using the skeleton for 2.13.
[hannosch]Addedzeo-client-blob-cache-sizeandzeo-client-blob-cache-size-checkoptions to control maximum size of blob cache, and when to check the size,
when using ClientStorage without shared blobs.
[davidjb]If a resource directory is specified usingresources, create it if it does
not yet exist.
[davisagli]Support the new create-schema option introduced in RelStorage 1.5.0b2.
[mj]4.1.7 - 2011-06-07Renamed the optional998-resources.zcml(introduced in 4.1.6) to998-resources-configure.zcml, otherwise it does not get loaded
in the standardsite.zcml.
[maurits]4.1.6 - 2011-06-01Add newresourcesoption for specifying a plone.resource central resource
directory.
[elro]4.1.5 - 2011-02-17Respect newinclude-site-packagesbuildout option introduced in buildout
1.5. Closeshttps://bugs.launchpad.net/bugs/716360.
[yuppie, hannosch]Added optionimport-directoryto point to custom import folder.
[garbas]4.1.4 - 2011-01-01Removedzeo-client-nameoption. The option had no effect since ZODB 3.2
and was removed in Zope 2.13. This closeshttps://bugs.launchpad.net/bugs/694920.
[hannosch]4.1.3 - 2010-12-20Added option http-force-connection-close which was only present in comment.
[tesdal]4.1.2 - 2010-12-05Fixed error introduced in 4.1.1.
[hannosch]4.1.1 - 2010-12-05Disambiguate theblob-storageoption ifshared-blobisn’t used. In this
case we usevar/blobcacheas a default location, so we don’t accidentally
overwrite the real blob data with a blob zeocache. Refshttps://bugs.launchpad.net/bugs/645904.
[hannosch]4.1 - 2010-12-04Give thereadmean overhaul, group options into sections and mention the
most commonly used ones at the top.
[hannosch]Add some flexibility tosite.zcmlcreation. Thanks to Wolfgang Schnerring
for the patch. This closeshttps://bugs.launchpad.net/collective.buildout/+bug/335311.
[hannosch]Raise an exception if both ZEO and RelStorage are configured at the same
time. This closeshttps://bugs.launchpad.net/collective.buildout/+bug/645100.
[hannosch]Added support for zc.buildout 1.5, while retaining support for 1.4. Thanks
to Jeff Rush for the patch. This closeshttps://bugs.launchpad.net/collective.buildout/+bug/683584.
[hannosch]4.0.5 - 2010-10-22Added support for specifying the new RelStorage options shared-blob-dir,
blob-cache-size, blob-cache-size-check, and blob-chunk-size.
[hathawsh]4.0.4 - 2010-09-09Add friendly error message if non-admin tries
“instance install|start|restart|stop|remove”.
[kleist]Exit with the return code of the executed do_* method. This closes #10906
(clicking “Restart” in ZMI control panel caused shutdown).
[kleist]Implemented the “restart” command for “bin/instance.exe”.
[kleist]4.0.3 - 2010-08-20Setuptools / Subversion ignores empty directories and doesn’t include them
into the source distribution. Added readme files to thebinandvardirectories inside the skeleton. This lets persistent ZEO caches work again,
which want to put their files into thevardirectory.
[hannosch]4.0.2 - 2010-08-04Rewritten major parts of commands specific for the Windows Service, inspired
by “collective.buildout.cluster.base.ClusterBase” as used by the Windows
installer. Closeshttp://dev.plone.org/plone/ticket/10860.
[kleist]4.0.1 - 2010-07-30Use pid file to check for running application, instead of service status.
[sidnei]4.0.0 - 2010-07-21“console” mode on Windows no longer returns immediately, thus makes it
usable by the Windows Service.
[kleist]Made tests compatible with Windows.
[hannosch]Added support for specifying new RelStorage options cache-local-mb,
cache-delta-size-limit, commit-lock-timeout and commit-lock-id.
[hannosch]4.0b2 - 2010-06-23Added a new dependency onmailingloggerand expose it as a convenient
new option.
[hannosch]Removed testing dependency onzope.testingand refactored test setup.
[hannosch]4.0b1 - 2010-04-04The recipe could sometimes fail to build twice if no zcml option was given.
This closeshttp://dev.plone.org/plone/ticket/10296.
[hannosch]4.0a4 - 2010-02-04Removed commented out options from the http-server section.
[hannosch]Added newenable-product-installationoption and let it default to off.
[hannosch]4.0a3 - 2010-01-24Tried to restore the Windows service functionality, getting closer but not
there yet all the way.
[hannosch]Use the same quoting approach for the console as for fg command on Windows.
[hannosch]Don’t call zopectl.quote_command(), since the added outer double quotes caused
subprocess.call() to fail with “WindowsError: [Error 87] The parameter is
incorrect”. Instead, hand roll the quoting (save outer quotes).
[kleist]Un-hardcoded ‘:’ as path separator, caused “ImportError: No module named
Zope2.Startup” on Windows. Seehttp://dev.plone.org/plone/ticket/9991.
[kleist]Removed the import directory from the skeleton. You can place import files
into the import directory in the client home in new Zope 2 versions.
[hannosch, davisagli]Make it possible to omit the user option, in which case buildout will ask
for a user and password, when a new instance is created.
[hannosch]Use our own make instance script and skeletons, only providing what we
really need anymore.
[hannosch]Merge the two ZopeCmd classes into one. We don’t rely or generate the runzope
script or anything inside parts/instance/bin anymore.
[hannosch]By default create a blob-storage invar/blobstorage.
[hannosch]Removed theno-shelloption and made it the default for running the
process. This also removes the need for therunzopescript.
[hannosch]This version can no longer be used to install a non-eggified Zope2. Thezope2-locationoption was removed.
[hannosch]4.0a2 - 2009-12-02Make it possible for third-party packages to add additional commands to the
control script by supplying a ‘plone.recipe.zope2instance.ctl’ entry point.
[davisagli]4.0a1 - 2009-11-14Removed the test command support from the control script which lets us
remove quite a bit of hackery. Added a note about usingbin/testinstead.
[hannosch]Added an explicitpython-check-intervaloption and change its default to1000instead of Python’s own default of100.
[hannosch]Changed defaultzserver-threadsto two instead of four.
[hannosch]Changed client connection cache defaults. We specify a cache size of 10000
instead of 5000. Also changed ZEO client cache to 128MB instead of 30MB.
[hannosch]If we are used in an environment with Zope2 as an egg, we make sure to
install the mkzopeinstance and runzope scripts we depend on ourselves.
This is done even if they already exist, since the eggs may have changed.
[hannosch, davisagli]Added Zope2 egg to the list of dependencies of this recipe. This can cause
trouble for Zope versions before Zope 2.12 or Plone before 4.0.
[hannosch]Added the cache-prefix option for RelStorage.3.6 (2009-10-11)Expanded the RelStorage options, including keep-history and replica-conf.
[hathawsh]3.5 (2009-09-05)Added support for relative-paths in the script generation.
[jvloothuis]Whenzope-confis set the config file will be directly loaded from that
location (it previously created a stub zope.conf which included it).
[jvloothuis]Added an option to avoid using the normal shell scripts for starting Zope.
This makes it possible to avoid the hard-coded paths in these scripts.
[jvloothuis]Allow the blob-dir parameter in RelStorage configurations.
[hathawsh]3.4 (2009-08-12)Support in line with fix for LP#407916.
[gotcha]Changed the ‘mkzopeinstance’ call respect the ‘bin-directory’ option.
[esteele]Removed thezope2-eggoption and the simple startup script from the recipe.
We assume that we have an egg distribution ifzope2-locationis not set.
[hannosch]Merged thedavisagli-eggified-zopebranch into the trunk.
[hannosch]Add a new icp-address option. This is useful for environments where
e.g. squid is used to front a Zope/ZEO cluster. Seehttp://www.zope.org/Members/htrd/icp/intro[neaj]3.3 - 2009-07-07Add handling for RelStorage options.
[elro]Reinstall scripts on update which appears to be good recipe practice.
[stefan]3.2 - 2009-04-02Add a new zcml-additional option. This is useful for environments where
non-code configuration (such as database connection details for
ore.contentmirror) are managed through zcml.
[wichert]3.1 (2009-03-15)The 2.9 fix for spaces caused a problem using debug (bug 337740)
due to the way do_debug passed the “-i” command line argument
to get_startup_cmd.
[smcmahon]3.0 (2009-02-27)The 2.9 fix for the instance run command was itself broken and
would fail on anything except Windows.
[smcmahon]Changed thezope2-eggoption to omit any kind of instance creation for
now. The mkzopeinstance script relies on being able to import Zope2, which
is not available when buildout runs.
[hannosch]2.9 (2009-02-26)The instance run command was vulnerable to spaces in pathnames, and
needed some extra quoting for win32.
[smcmahon]Check for existence of windows scripts before patching them. Some
Linux distributions of Zope2 don’t have these files.
[smcmahon]Delegate commands towin32serviceutil.HandleCommand()on win32,
instead of starting the interpreter throughos.system(). Should
shave off a couple seconds from overall time taken to process those
commands.
[sidnei]ComputeserviceClassStringourselves, since we are calling this
as a module and not directly as__main__, otherwise the service
won’t be installed correctly.
[sidnei]2.8 (2008-12-05)Add more tests for ZEO client with blob and demo storages.
Still no test on ‘shared-blob-dir’ option.
[encolpe]Always use ‘r’-style strings for passing script and configuration
filenames (eg: on ‘instance run <script>’).
[sidnei]Add a demo-storage option and tests.
[encolpe]Add a first test for blob-storage.
[encolpe]2.7 (2008-11-18)Added azope2-eggoption and an accompanying simple startup script for
use with an eggified Zope2.
[hannosch]Do not fail with a Zope2 egg checkout.
[hannosch]Normalize first argument to os.spawnl. It can get really upset
otherwise (dll import failure on a relocatable python install).
[sidnei]Use same quoting as on ‘do_foreground’ for servicescript
usage. Fixes problems with installing the buildout-based Plone
installer for Windows on a path with spaces.
[sidnei]Ensure that do_foreground leaves self.options.program arguments as it
found them.  This makes it possible to use ‘fg’ and ‘debug’ more than
once within the same control session.
[klm]2.6 (2008-10-22)Normalize, absolutize and lowercase-ize (is that a word?) paths
before comparing, to avoid problems with relative filenames and
different drive letter case on Windows.
[sidnei]2.5 (2008-09-22)Add support for zodb-cache-size-bytes from ZODB 3.9 and later.
[wichert]2.4 (2008-07-15)Introduced zope.conf variables “INSTANCEHOME” and “CLIENTHOME”.
Its very very helpful in cluster setups with zope-conf-additional
sections (buildout lacks to reference the current section).
[jensens]Made test command compatible with zope.testing 3.6.
[hannosch]2.3.1 (2008-06-10)No code changes. Released to fix the 2.3 release which put .egg files in
the wild.
[hannosch]2.3 (2008-06-06)Need to actually pass in deprecation-warnings, otherwise we get a
KeyError.
[sidnei]Fix another place where the directory name needed to be escaped to
avoid problems with spaces.
[sidnei]Don’t try to delete location if it does not exist.
[sidnei]2.2 (2008-06-06)Addeddeprecation-warningsoption that allows turning the option
to disable deprecation warnings on or off. You can provide the valueerrorto it, and every deprecation warning will be turned into an
exception.
[sidnei]Fix copy and paste error that caused a failure on changing
runzope.bat to call servicewrapper.py.
[sidnei]Escape ‘executable’ argument before passing it to os.spawnl, in
order to make it work on Windows when the executable name has spaces
on it.
[sidnei]Addedhttp-fast-listenoption. Use of this option requires Zope >= 2.11.
[stefan]2.1 (2008-06-05)Fixed a test problem on Windows, where explicit closing of files is required.
[hannosch]Callservicewrapper.pyfromrunzope.batinstead of settingPYTHONPATHand callingZope2/Startup/run.py. That way we set
sys.path from inside Python code and avoid exceeding the maximum
environment variable limit.
[sidnei]Allow to use an alternative temporary storage, by specifying the newzodb-temporary-storageoption.
[jensens]Addedenvironment-varsoption to set environment variables. Changed
the zope-conf-additional example code to something that isn’t covered by
the recipe.
[claytron]2.0 (2008-05-29)Do not use system but exec when starting Zope. This makes it possible for
process management tools to properly manage Zope processes.
[wichert]Addedsite-zcmloption
Added tests
[mustapha]Add support for ZEO authentication. Note that this does not work with any
released Zope or ZODB version at this moment. Seehttp://mail.zope.org/pipermail/zope/2005-October/161951.htmlfor required
patches.
[wichert]Added FTP and WebDAV options
[claytron]Allow rel-storage to be an empty string, meaning ‘do not use relstorage’.
This allows an extending buildout configuration to disable relstorage again.
[mj]1.9 (2008-04-15)Fix rel-storage parsing for options with spaces. Note that split() or
split(None) already strips the string.
[mj]1.8 (2008-04-05)Fixed a Win32 problem in which the presence of Python string escapes in the
path to zope.conf (e.g., d:botestpartsinstanceetczope.conf would escape
the b). This showed up when using the ‘run’, ‘debug’ or ‘adduser’ commands.
This fixes #211416.
[smcmahon]Addedconsolecommand to the instance script, which is equivalent to fg but
does not implicitly turn on debug mode but respects the zope.conf setting.
[hannosch]1.7 (2008-03-31)Added new client-home option and let it default to a subfolder of the
buildout-wide var folder with a subfolder of the name of the section.
[hannosch]Added limited support for running tests under Zope <= 2.8.
[hannosch]1.6 (2008-03-27)Fixed runzope script generation for Zope 2.8.
[hannosch]Cleaned up “./bin/instance test” option handling.
[stefan]Removed generator expressions as these aren’t supported in < py2.4, which is
used by zope 2.7/8.
[duffyd]1.5 (2008-02-29)Addedaccess-log-customoption to be able to use another event logger
than the file one for the access logger.
[tarek]Fix instance generation to work on Windows with blanks in the path name.
This closes #188023.
[hannosch, gotti]Added ‘zeo-client-client’ option which results in ‘client <value>’ inside
<zeoclient>.
[timte, hannosch]Made relstorage handling more generic, so it now supports any RelStorage
adapter, including Oracle (which was broken).
[mj]1.4 (2008-02-23)Fix typo in event log parameter name (from “z-log” to “z2-log”), to comply
with the documentation. This closes #190943.
[kdeldycke]Create pid and lock file folders if they don’t exist.
[kdeldycke]Remove hard-coded log level and use the event_log_level parameter to set it
dynamically. This closes #190994.
[kdeldycke]Added a test environment, using zc.buildout.testing, and a doctest that
tries the recipe.
[tarek]Added anevent-log-customoption
[tarek]Added example for the zope-conf-additional option. This closes #185539.
[klm, hannosch]Addedrel-storageoption to be able to wire Zope to RelStorage
(postgresql/oracle) instead of a FileStorage database.
[tarek]1.3For each entry in recipe-specified ‘extra-paths’ line, add a ‘path’ line
to the instance and Zope client zope.conf files.
[klm]1.2Added the booleanshared-bloboption, defaulting tono. If all ofzeo-client,blob-storageandshared-bloboptions are set,
the instance will assume the blob directory set byblob-storageis shared
with the server instead of streaming ‘blob’ files through the ZEO connection.
[rochael]Changedctl.do_foreground()(which is invoked by thefgcommand
line argument) start Zope in debug mode to emulate the behavior ofzopectl fg. This required a little special WIN32 code to make
sure it would work in both*nixand Windows.
[smcmahon]Addedvaroption, which is used to configure the base directory for all
the things going into var.
[hannosch]Addedzeo-varoption, which is used in the zeo storage snippets to
configure the zeo var folder.
[hannosch]Merged rochael-blobsupport branch. Added support for ZODB 3.8 blob storage
configuration for ZEO clients. This referenceshttps://bugs.launchpad.net/collective.buildout/+bug/179113.
[rochael, hannosch]Addedzeo-client-nameoption. Defaults to the name of the ZEO client.
[hannosch]1.1Small documentation update. Added link to the bugtracker.
[hannosch]Changed default of zope.conf option ‘default-zpublisher-encoding’ to ‘utf-8’
instead of Zope’s default value of ‘iso-8859-15’.Have PID file’s location default to ‘${buildout:directory}/var/${name}.pid’.
Keeping the PID file in $INSTANCE_HOME gives trouble when buildout rebuilds
the part.
[nouri, mustapha]1.0Increased ‘zodb_cache_size’ default value to 5000, which is more likely a
better default these days.
[hannosch]Added support for ‘extra-paths’ as in ‘zc.recipe.egg’; this is useful when
using regular python packages for which no eggs are available (yet), i.e.
with ‘plone.recipe.distros’.
[witsch]Added zeo-storage option (merge branch ree-add-zeo-storage-option).
[ree]Avoid doubled entries to eggs specified in the buildout in ‘sys.path’:
the working set (‘ws’) gets passed again when installing the script
(‘bin/instance’), but it is not also added to ‘extra_paths’.
[witsch]Patching ‘PYTHONPATH’ in the Zope startup skripts should insert all
additional paths (to eggs) __before__ ‘SOFTWARE_HOME’, because otherwise
(newer) egg versions of components from the standard Zope distribution
(i.e. stuff that lives in ‘lib/python’) cannot be used.
[witsch]Changed the option to suppress deprecation warnings to “–nowarn” or
‘–nowarning” to be consistent with “zopectl test”.
[witsch]Added option “-w” to allow the test runner to suppress deprecation warnings,
so it’s easier to spot failing tests…
[witsch]Updated import for Zope 2.7 (and below) compatibility.
[duffyd]Merging -r51966:52659 claytron-zopeconfoptions branch to trunk.
[claytron]Made the config snippet prettier while still getting the resulting
indentation right.
[witsch]0.9Added support for zodb 3.8’s “<blobstorage>” directive.
[witsch]Added a script name arg before callint zope.testing.testrunner.run.
zope.testing.testrunner:1772, get_options removes the first arg from
the list of arguments expecting a script name there. Was causing
“bin/instance test” to behave improperly.
[rossp]0.8Use bin if present falling back to utilities. This makes it possible to use
a Zope version installed from a tarball and not compiled inplace.
[rossp]0.7Found the problem with strange environment variables.
[hannosch]Fixed documentation bug, the cache size is respected by non-zeo instance as
well.
[hannosch]0.6J1m actually read the docs ;)
[hannosch]Attempt to fix the sometimes insane number of tests which are found by the
test runner.
[hannosch]0.5Added an option to set the effective-user.
[optilude]0.4Generate a bin/repozo script to perform backups using repozo.py (and
set up the appropriate pythonpath for this to work).
[optilude]Document options properly, and add the ability to specify a zope.conf
file explicitly rather than having one generated from a template.
[optilude]0.3Finally found a way to provide the Zope Windows service with the right
environment. We need a new wrapper script, which sets up the PYTHONPATH.
[hannosch]Make it possible to configure the name of the zopectl script using the
control-script option in the [instance] section.
[wichert]0.2Extend support for zcml slugs to include Zope 2.9.
[dunny]Added support for making a ZEO-client.
[regebro]0.1Initial implementation.
[hannosch]