Hay In A Needlestack

Sat, 30 Jun 2007

My Pyblosxom Setup

I'm running this site using Pyblosxom running on Fedora. Pyblosxom (as the original Blosxom) is very simple and uses only the file system to store blog entries, configuration, etc. Think of it as server side includes on steroids. As I know a bit of HTML, CSS and Python, and really hate big complex web applications it seemed like the perfect match for me.

I setup Pyblosxom as a non-root user, serving it from my public_html. To do this in Fedora you have to uncomment in the httpd.conf files the lines controlling UserDir directories and add the following to enable CGI from the public_html:

<Directory /home/*/public_html/cgi-bin/>
    Options ExecCGI SymLinksIfOwnerMatch
    SetHandler cgi-script
</Directory>
If SELinux is active you have to ensure that the files in ~/public_html and ~/public_html/cgi-bin have the right context (more info here).

With that out of the way, just install Pyblosxom as described by its documentation. The only twist in my setup is that I hide the name of Pyblosxom CGI script from my URLs and make the root of my page redirect to the blog root. This is accomplished with a bit of Apache rewrite magic. Put this .htaccess file in your public_html:

RewriteEngine on
RewriteBase /~replace-with-your-user-name
RewriteRule ^$ blog/ [R=permanent]
RewriteRule ^index.htm.*$ blog/ [R=permanent]
RewriteRule ^blog$ cgi-bin/pyblosxom.cgi
RewriteRule ^blog/(.*) cgi-bin/pyblosxom.cgi/$1

Configuration of Pyblosxom is best covered in its manual, but here is a tip I missed the first time. When customizing a flavour (and that's exactly like maintaining some server side includes), you can just copy the default html.flav dir to your local flavour dir; Pyblosxom will always pick the locally defined one overriding the default, so you don't have to call it anything different than "html".

Besides Pyblosxom, some HTML and CSS, I use the following Pyblosxom plug-ins:

There are many other plug-ins available, and it doesn't seem to be really hard to code a new one in Python.

Posted at: 09:39 | Category: /metablog | permalink

Copyright © 2007,2008,2009,2010 Gustavo M. D. Vieira