Metadata-Version: 1.0
Name: isotoma.recipe.pound
Version: 0.1.12
Summary: Buildout recipes to configure the pound load balancer
Home-page: http://pypi.python.org/pypi/isotoma.recipe.pound
Author: Doug Winter
Author-email: doug.winter@isotoma.com
License: Apache Software License
Description: Pound buildout recipe
        =====================
        
        This package provides buildout_recipes for the configuration of pound_.  This
        is a more fully featured recipe than others we've found on PyPI, and supports
        things like 500 error pages, emergency servers and configurable affinity.
        
        We use the system pound, so this recipe will not install pound for you.  If you
        wish to install pound, use `zc.recipe.cmmi`_ perhaps.
        
        .. _buildout: http://pypi.python.org/pypi/zc.buildout
        .. _pound: http://www.apsis.ch/pound/
        .. _`zc.recipe.cmmi`: http://pypi.python.org/pypi/zc.recipe.cmmi
        
        An example of a standard setup::
        
            [pound]
            recipe = isotoma.recipe.pound
            address = 127.0.0.1
            port = 8080
            session = COOKIE:_ZopeID:3600
            err500 = /var/www/emergency/index.html
            emergency = 127.0.0.1:8090
            backends = 
                127.0.0.1:8081
                127.0.0.1:8082
                127.0.0.1:8083
        
        If you use pound or another loadbalancer, you might find `isotoma.recipe.portmap`_ useful too.
        
        .. _`isotoma.recipe.portmap`: http://pypi.python.org/pypi/isotoma.recipe.portmap
        
        
        Mandatory parameters
        --------------------
        
        address
            The address on which to listen for connections
        port
            The port on which to listen for connections
        backends
            A list of backends, supplied as ``address:port`` pairs, separated by whitespace
        
        Optional parameters
        -------------------
        
        executable
            The path to the pound binary.  Defaults to ``/usr/sbin/pound``.
        poundctl
            The path to the poundctl binary.  Defaults to ``/usr/sbin/poundctl``.
        user
            The user to run pound as.  Defaults to ``www-data``.
        group
            The group to run pound as.  Defaults to ``www-data``.
        logfacility
            The syslog facility to which to send log output.  Defaults to ``local0``.
        loglevel
            The logging level.  Defaults to '2'.
        alive
            The number of seconds between checks for aliveness of previously dead backends.  Defaults to '30'.
        timeout
            The timeout for HTTP requests to a backend.  Defaults to '60'.
        xHTTP
            Which verbs are accepted.  See the pound manual for more details.  Defaults to '0' (accept only standard verbs).
        template
            The full path to the configuration file template, if you want to customise further.  Defaults to pound.cfg template in this package.
        session
            If you wish to have session affinity, provide the configuration here as ``type:id:TTL``.
        emergency
            If you use an emergency server, provide the configuration here as ``address:port``.
        err500
            If you wish to provide an error 500 page, provide the full path here.
        
        Emergency Servers
        -----------------
        
        Recipes are also included to help construct emergency pages.  Pound's support
        for emergency serving is pretty rudimentary, so it needs some help to provide a
        decent service.  The emergency recipe:
        
         * provides an apache configuration suitable for use in this situation
         * processes the index page of the emergency content with a simple string substitution, so the image and css resources can be located
        
        The index page of the emergency server is suitable for using in the err500
        directive as well.
        
        To use this, you should first create a directory containing an index.html page,
        and whatever resources are needed to serve this page from apache.  In the
        template, refer to all resouces using ``$baseurl``. For example, if we have::
        
            htdocs/index.html
            htdocs/images/logo.png
        
        then in `index.html` put::
        
            <html>
                <body>
                    <img src="$baseurl/images/logo.png" />
                </body>
            </html>
        
        Then provide a recipe like::
        
            [emergency]
            recipe = isotoma.recipe.pound:emergency
            path = /path/to/htdocs
            interfaces = 
                127.0.0.1:8090
                32.32.32.32:emerg.example.com:80
            listen = yes
            public = http://www.emerg.example.com
            access_log = /var/log/apache2/help.help.access.log
            error_log = /var/log/apache2/help.help.error.log
            substitute = index.html
        
        ``$baseurl`` will be replaced with the value of public.
        
        This might seem like an overly convoluted way of setting up something
        relatively simple, but if you want valid and testable configurations in
        continuous integration, staging and production environments this is worth
        the effort.
        
        
        Changelog
        =========
        
        0.1.12 (2013-01-21)
        -------------------
        
        - Make sure the cycle script is run as run and only when there is a pound socket.
        
        
        0.1.11 (2012-10-25)
        -------------------
        
        - Don't invoke poundctl when working out which backends to use. This avoids the
          whole issue of crappy pound XML that python2.4 can't parse.
        
        
        0.1.10 (2012-10-14)
        -------------------
        
        - Refactor resuable cycle logic into a Backend class.
        
        - Ensure the listen address is in correct state before moving onto next
          backend.
        
        - You can optionally poke URL's on the backend to ensure it has started.
        
        
        0.1.9 (2012-10-01)
        ------------------
        
        - Add a default emergency page.
        
        
        0.1.8 (2012-07-03)
        ------------------
        
        - No changes - release to fix version sync weirdness?
        
        
        0.1.7 (2012-07-03)
        ------------------
        
        - Restore python2.4 compatibility
        
        
        0.1.6 (2012-02-03)
        ------------------
        
         - Better handling of migrations to ${buildout:run-directory}
        
        
        0.1.5 (2011-08-26)
        ------------------
        
         - If there is a ${buildout:run-directory}, put pid file in there
        
        
Keywords: proxy buildout pound
Platform: UNKNOWN
Classifier: Framework :: Buildout
Classifier: Intended Audience :: System Administrators
Classifier: Operating System :: POSIX
Classifier: License :: OSI Approved :: Apache Software License
