zope.paste

Zope 3 and PasteDeploy
Download

zope.paste Ranking & Summary

Advertisement

  • Rating:
  • License:
  • ZPL
  • Price:
  • FREE
  • Publisher Name:
  • Sidnei da Silva
  • Publisher web site:
  • http://sf.net/projects/archetypes

zope.paste Tags


zope.paste Description

zope.paste is a package that allows you to- employ WSGI middlewares inside a Zope 3 application- deploy the Zope 3 application server on any WSGI-capable webserverusing PasteDeploy. These are two completely different modi operandi which only have in common that they are facilitate PasteDeploy. Each is explained in detail below.WSGI middlewares inside Zope 3zope.paste allows you to stack WSGI middlewares on top of Zope 3's publisher application without changing the way you configure Zope (zope.conf) or run it (runzope, zopectl).Configuration is very simple. Assuming that you've already created a Zope 3 instance using the mkzopeinstance script, there are three steps that need to be performed:Installing and configuring zope.pastezope.paste can be installed as an egg anywhere onto your PYTHONPATH or simply dropped into your < INSTANCE_HOME >/lib/python directory. Then you need to enable zope.paste's ZCML configuration by creating the file < INSTANCE_HOME >/etc/package-includes/zope.paste-configure.zcml with the following contents:< include package="zope.paste" / >Configuring the serverWe create a < server > directive in < INSTANCE_HOME >/etc/zope.conf to use zope.paste's server definition, Paste.Main. That way the WSGI middlewares will be invoked when responses are served through this server:< server > type Paste.Main address 8081< /server >Configuring the WSGI stackNow we configure a WSGI application using PasteDeploy syntax in < INSTANCE_HOME >/etc/paste.ini. Here's an example of how to configure the Paste.Main application to use the Zope 3 publisher as a WSGI application, therefore doing the exact same thing that the regular HTTP server definition would do:paste.app_factory = zope.paste.application:zope_publisher_app_factoryThat's not really interesting, though. PasteDeploy allows you to chain various WSGI entities together, which is where it gets interesting. There seems to be a distinction between 'apps' and 'filters' (also referred to as 'middleware'). An example that might be of interest is applying a XSLT transformation to the output of the Zope 3 WSGI application.Happily enough, someone seems to have already created a WSGI filter for applying a XSLT stylesheet. You can find it at http://www.decafbad.com/2005/07/xmlwiki/lib/xmlwiki/xslfilter.pyIf you wanted to apply this WSGI filter to Zope 3, you would need three things:1. Put the xslfilter.py file somewhere in PYTHONPATH. /lib/python is a good place.2. Add this snippet to the bottom of xslfilter.py: def filter_factory(global_conf, **local_conf): def filter(app): return XSLFilter(app) return filter3. Change paste.ini file as follows: pipeline = xslt main paste.app_factory = zope.paste.application:zope_publisher_app_factory paste.filter_factory = xslfilter:filter_factory What this does is to define a pipeline. Learn more about this on the PasteDeploy website. Refer to the source of xslfilter.py for information about how to pass a stylesheet to the filter.Deploying Zope 3 on an WSGI-capable webserverzope.paste allows you to run Zope 3 on any WSGI-capable webserver software using PasteDeploy. For this you will no longer need a Zope 3 instance (though you can still have one), you won't configure Zope 3 through zope.conf and won't start it using runzope or zopectl.Configuring the applicationzope.paste provides a PasteDeploy-compatible factory for Zope 3's WSGI publisher application and registers it in an entry point. We can therefore create a very simple Zope 3 application in a PasteDeploy configuration file (e.g. paste.ini):use = egg:zope.pastesite_definition = /path/to/site.zcmlfile_storage = /path/to/Data.fsdevmode = onIn this case, /path/to/site.zcml refers to a site.zcml as known from a Zope 3 instance. You can, for example, put paste.ini into an existing Zope 3 instance, next to site.zcml.Configuring the ZODB databaseInstead of referring to a ZODB FileStorage using the file_storage setting, you can also configure multiple or other ZODB database backends in a ZConfig-style configuration file (much like zope.conf), e.g. the following configures a ZEO client:< zodb > < zeoclient > server localhost:8100 storage 1 cache-size 20MB < /zeoclient >< /zodb >Refer to this file from paste.ini this way (and delete the file_storage setting):db_definition = db.confConfiguring the serverIn order to be able to use our Zope application, we only need to add a server definition. We can use the one that comes with Paste or PasteScript, rather:use = egg:PasteScript#wsgiutilshost = 127.0.0.1port = 8080Now we can start the application using the paster command that comes with PasteScript: paster serve paste.iniWSGI middlewares can be configured like described above or on the PasteDeploy website.Product's homepage


zope.paste Related Software