Deploying Pyblosxom with Lighttpd and fastcgi

Summary

This walks through install Pyblosxom as a FastCGI application on a Lighttpd web server with mod_fcgi installed.

If you find any issues, please let us know.

If you can help with the documentation efforts, please let us know.

Dependencies

  • Lighttpd
  • mod_fcgi
  • python-flup
  • administrative privileges to the server

Deployment

  1. Make sure mod_fcgi is installed correctly and working.

  2. Create a blog—see the instructions for the blog directories, config.py setup and other bits of Setting up a blog in install_cgi.

  3. Create a pyblosxom.wsgi script that looks something like this:

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    #!/usr/bin/env python
    # This is the pyblosxom.wsgi script that powers the _______
    # blog.
    
    import sys
    
    def add_to_path(d):
       if d not in sys.path:
          sys.path.insert(0, d)
    
    # call add_to_path with the directory that your config.py lives in.
    add_to_path("/home/joe/blog")
    
    # if you have Pyblosxom installed in a directory and NOT as a
    # Python library, then call add_to_path with the directory that
    # Pyblosxom lives in.  For example, if I untar'd
    # pyblosxom-1.5.tar.gz into /home/joe/, then add like this:
    # add_to_path("/home/joe/pyblosxom-1.5/")
    
    import Pyblosxom.pyblosxom
    application = Pyblosxom.pyblosxom.PyblosxomWSGIApp()
    
    from flup.server.fcgi import WSGIServer
    WSGIServer(application).run()
    

    Don’t forget to make it executable by Lighttpd. I did it like this:

    chown :www-data pyblosxom.wsgi
    chmod g+x pyblosxom.wsgi
    

    This way you change group ownership to the group that lighty belongs to and give all group members execution permission.

  4. Create /etc/lighttpd/conf-available/90-myblog.conf with this content:

    server.modules += ( "mod_fastcgi" )
    
    $HTTP["host"] =~ "(^|\.*)yourhost\.com$" {
    
    #### fastcgi module
    ## read fastcgi.txt for more info
    # this line may help with finding what's wrong, check out errorlog file
    fastcgi.debug=1
    fastcgi.server = (
            "/myblog" => (
            "main" => (
            "host" => "127.0.0.1",
            "port" => 3033,
            "check-local" => "disable",
            "max-procs" => 1,
            "bin-path" => "/path/to/pyblosxom.wsgi"
       )
      )
     )
    
    }
    

    You must change yourhost.com to match your domain.

    Fascgi.debug line is useful for finding out why your app doesn’t work. Error messages go to /var/log/lighttpd/errors.log unless configured otherwise. When it all works, set it to 0.

    Change /myblog to the url path you want your blog to live at. If you want it at root node (like http://yourhost.com/ ), set it to /.

    Select any not used port number.

    Checkout what check-local and max-procs mean in Lighttpd docs.

    Change /path/to/pyblosxom.wsgi to be the absolute path to the .wsgi file set up in step 3.

  5. Now you can enable and disable this part of configuration with lighttpd-enable-mod and lighttpd-disable-mod, so now do:

    lighttpd-enable-mod myblog
    service lighttpd force-reload
    

Note

Any time you make changes to Pyblosxom (update, add plugins, change configuration), you’ll have to force-reload configuration of Lighttpd.

Table Of Contents

Previous topic

Deploying Pyblosxom with Apache and mod_wsgi

Next topic

Deploy Pyblosxom with Static Rendering

This Page