PyBlosxom is a lightweight file-based weblog system. It originally started out as a Python clone of Blosxom but has since evolved into a beast of its own. PyBlosxom focuses on three things: simplicity, extensibility, and community.
python setup.py build
running build running build_py creating build creating build/lib creating build/lib/Pyblosxom copying Pyblosxom/__init__.py -> build/lib/Pyblosxom copying Pyblosxom/tools.py -> build/lib/Pyblosxom copying Pyblosxom/_logging.py -> build/lib/Pyblosxom copying Pyblosxom/plugin_utils.py -> build/lib/Pyblosxom copying Pyblosxom/pyblosxom.py -> build/lib/Pyblosxom creating build/lib/Pyblosxom/cache copying Pyblosxom/cache/__init__.py -> build/lib/Pyblosxom/cache copying Pyblosxom/cache/entrypickle.py -> build/lib/Pyblosxom/cache copying Pyblosxom/cache/base.py -> build/lib/Pyblosxom/cache copying Pyblosxom/cache/entryshelve.py -> build/lib/Pyblosxom/cache creating build/lib/Pyblosxom/entries copying Pyblosxom/entries/__init__.py -> build/lib/Pyblosxom/entries copying Pyblosxom/entries/fileentry.py -> build/lib/Pyblosxom/entries copying Pyblosxom/entries/base.py -> build/lib/Pyblosxom/entries creating build/lib/Pyblosxom/renderers copying Pyblosxom/renderers/__init__.py -> build/lib/Pyblosxom/renderers copying Pyblosxom/renderers/base.py -> build/lib/Pyblosxom/renderers copying Pyblosxom/renderers/debug.py -> build/lib/Pyblosxom/renderers copying Pyblosxom/renderers/blosxom.py -> build/lib/Pyblosxom/renderers running build_scripts creating build/scripts-2.5 copying and adjusting bin/pyblcmd -> build/scripts-2.5 changing mode of build/scripts-2.5/pyblcmd from 644 to 755
python setup.py install
running install running build running build_py running build_scripts running install_lib creating /usr/lib/python2.5/site-packages/Pyblosxom copying build/lib/Pyblosxom/__init__.py -> /usr/lib/python2.5/site-packages/Pyblosxom copying build/lib/Pyblosxom/tools.py -> /usr/lib/python2.5/site-packages/Pyblosxom creating /usr/lib/python2.5/site-packages/Pyblosxom/cache copying build/lib/Pyblosxom/cache/__init__.py -> /usr/lib/python2.5/site-packages/Pyblosxom/cache copying build/lib/Pyblosxom/cache/entrypickle.py -> /usr/lib/python2.5/site-packages/Pyblosxom/cache copying build/lib/Pyblosxom/cache/base.py -> /usr/lib/python2.5/site-packages/Pyblosxom/cache copying build/lib/Pyblosxom/cache/entryshelve.py -> /usr/lib/python2.5/site-packages/Pyblosxom/cache copying build/lib/Pyblosxom/_logging.py -> /usr/lib/python2.5/site-packages/Pyblosxom copying build/lib/Pyblosxom/plugin_utils.py -> /usr/lib/python2.5/site-packages/Pyblosxom creating /usr/lib/python2.5/site-packages/Pyblosxom/entries copying build/lib/Pyblosxom/entries/__init__.py -> /usr/lib/python2.5/site-packages/Pyblosxom/entries copying build/lib/Pyblosxom/entries/fileentry.py -> /usr/lib/python2.5/site-packages/Pyblosxom/entries copying build/lib/Pyblosxom/entries/base.py -> /usr/lib/python2.5/site-packages/Pyblosxom/entries creating /usr/lib/python2.5/site-packages/Pyblosxom/renderers copying build/lib/Pyblosxom/renderers/__init__.py -> /usr/lib/python2.5/site-packages/Pyblosxom/renderers copying build/lib/Pyblosxom/renderers/base.py -> /usr/lib/python2.5/site-packages/Pyblosxom/renderers copying build/lib/Pyblosxom/renderers/debug.py -> /usr/lib/python2.5/site-packages/Pyblosxom/renderers copying build/lib/Pyblosxom/renderers/blosxom.py -> /usr/lib/python2.5/site-packages/Pyblosxom/renderers copying build/lib/Pyblosxom/pyblosxom.py -> /usr/lib/python2.5/site-packages/Pyblosxom byte-compiling /usr/lib/python2.5/site-packages/Pyblosxom/__init__.py to __init__.pyc byte-compiling /usr/lib/python2.5/site-packages/Pyblosxom/tools.py to tools.pyc byte-compiling /usr/lib/python2.5/site-packages/Pyblosxom/cache/__init__.py to __init__.pyc byte-compiling /usr/lib/python2.5/site-packages/Pyblosxom/cache/entrypickle.py to entrypickle.pyc byte-compiling /usr/lib/python2.5/site-packages/Pyblosxom/cache/base.py to base.pyc byte-compiling /usr/lib/python2.5/site-packages/Pyblosxom/cache/entryshelve.py to entryshelve.pyc byte-compiling /usr/lib/python2.5/site-packages/Pyblosxom/_logging.py to _logging.pyc byte-compiling /usr/lib/python2.5/site-packages/Pyblosxom/plugin_utils.py to plugin_utils.pyc byte-compiling /usr/lib/python2.5/site-packages/Pyblosxom/entries/__init__.py to __init__.pyc byte-compiling /usr/lib/python2.5/site-packages/Pyblosxom/entries/fileentry.py to fileentry.pyc byte-compiling /usr/lib/python2.5/site-packages/Pyblosxom/entries/base.py to base.pyc byte-compiling /usr/lib/python2.5/site-packages/Pyblosxom/renderers/__init__.py to __init__.pyc byte-compiling /usr/lib/python2.5/site-packages/Pyblosxom/renderers/base.py to base.pyc byte-compiling /usr/lib/python2.5/site-packages/Pyblosxom/renderers/debug.py to debug.pyc byte-compiling /usr/lib/python2.5/site-packages/Pyblosxom/renderers/blosxom.py to blosxom.pyc byte-compiling /usr/lib/python2.5/site-packages/Pyblosxom/pyblosxom.py to pyblosxom.pyc running install_scripts copying build/scripts-2.5/pyblcmd -> /usr/bin changing mode of /usr/bin/pyblcmd to 755 running install_data creating /usr/lib/python2.5/site-packages/Pyblosxom/flavours creating /usr/lib/python2.5/site-packages/Pyblosxom/flavours/rss20.flav copying Pyblosxom/flavours/rss20.flav/story.rss20 -> /usr/lib/python2.5/site-packages/Pyblosxom/flavours/rss20.flav copying Pyblosxom/flavours/rss20.flav/foot.rss20 -> /usr/lib/python2.5/site-packages/Pyblosxom/flavours/rss20.flav copying Pyblosxom/flavours/rss20.flav/head.rss20 -> /usr/lib/python2.5/site-packages/Pyblosxom/flavours/rss20.flav copying Pyblosxom/flavours/rss20.flav/content_type.rss20 -> /usr/lib/python2.5/site-packages/Pyblosxom/flavours/rss20.flav creating /usr/lib/python2.5/site-packages/Pyblosxom/flavours/html.flav copying Pyblosxom/flavours/html.flav/date_head.html -> /usr/lib/python2.5/site-packages/Pyblosxom/flavours/html.flav copying Pyblosxom/flavours/html.flav/head.html -> /usr/lib/python2.5/site-packages/Pyblosxom/flavours/html.flav copying Pyblosxom/flavours/html.flav/foot.html -> /usr/lib/python2.5/site-packages/Pyblosxom/flavours/html.flav copying Pyblosxom/flavours/html.flav/story.html -> /usr/lib/python2.5/site-packages/Pyblosxom/flavours/html.flav copying Pyblosxom/flavours/html.flav/content_type.html -> /usr/lib/python2.5/site-packages/Pyblosxom/flavours/html.flav copying Pyblosxom/flavours/html.flav/date_foot.html -> /usr/lib/python2.5/site-packages/Pyblosxom/flavours/html.flav creating /usr/lib/python2.5/site-packages/Pyblosxom/flavours/atom.flav copying Pyblosxom/flavours/atom.flav/foot.atom -> /usr/lib/python2.5/site-packages/Pyblosxom/flavours/atom.flav copying Pyblosxom/flavours/atom.flav/head.atom -> /usr/lib/python2.5/site-packages/Pyblosxom/flavours/atom.flav copying Pyblosxom/flavours/atom.flav/story.atom -> /usr/lib/python2.5/site-packages/Pyblosxom/flavours/atom.flav copying Pyblosxom/flavours/atom.flav/content_type.atom -> /usr/lib/python2.5/site-packages/Pyblosxom/flavours/atom.flav creating /usr/lib/python2.5/site-packages/Pyblosxom/flavours/error.flav copying Pyblosxom/flavours/error.flav/content_type.error -> /usr/lib/python2.5/site-packages/Pyblosxom/flavours/error.flav copying Pyblosxom/flavours/error.flav/head.error -> /usr/lib/python2.5/site-packages/Pyblosxom/flavours/error.flav copying Pyblosxom/flavours/error.flav/story.error -> /usr/lib/python2.5/site-packages/Pyblosxom/flavours/error.flav copying Pyblosxom/flavours/error.flav/foot.error -> /usr/lib/python2.5/site-packages/Pyblosxom/flavours/error.flav creating /usr/lib/python2.5/site-packages/Pyblosxom/flavours/rss.flav copying Pyblosxom/flavours/rss.flav/content_type.rss -> /usr/lib/python2.5/site-packages/Pyblosxom/flavours/rss.flav copying Pyblosxom/flavours/rss.flav/story.rss -> /usr/lib/python2.5/site-packages/Pyblosxom/flavours/rss.flav copying Pyblosxom/flavours/rss.flav/foot.rss -> /usr/lib/python2.5/site-packages/Pyblosxom/flavours/rss.flav copying Pyblosxom/flavours/rss.flav/head.rss -> /usr/lib/python2.5/site-packages/Pyblosxom/flavours/rss.flav creating /usr/share/pyblosxom-1.4.2 creating /usr/share/pyblosxom-1.4.2/web copying web/pyblosxom.cgi -> /usr/share/pyblosxom-1.4.2/web copying web/pyblosxom.tac -> /usr/share/pyblosxom-1.4.2/web copying web/config.py -> /usr/share/pyblosxom-1.4.2/web running install_egg_info Writing /usr/lib/python2.5/site-packages/pyblosxom-1.4.2.egg-info
Wir wollen die Applikation nicht als http://url/cgi-bin/pyblosxom.cgi aufrufen, daher benennen wir das Skript einfach um in blog.
mv /usr/share/pyblosxom-1.4.2/web/pyblosxom.cgi /usr/share/pyblosxom-1.4.2/web/blogDie VirtualHost Konfiguration ist dann wie folgt.
pyblosxom.conf
<VirtualHost 127.0.0.1:80>
ServerName pyblosxom
ErrorLog logs/pyblosxom-error_log
CustomLog logs/pyblosxom-access_log combined
DocumentRoot /usr/share/pyblosxom-1.4.2/web
<Directory /usr/share/pyblosxom-1.4.2/web>
Options ExecCGI
DirectoryIndex blog
</Directory>
<Files blog>
ForceType application/cgi-script
SetHandler cgi-script
</Files>
</VirtualHost>
Jetzt ist noch die Applikation anzupassen in der Datei /usr/share/pyblosxom-1.4.2/web/config.py.
config.py
... py["datadir"] = "/data/pyblosxom/blog/entries" ...
Die referenzierten Verzeichnisse müssen auch existieren.
Unter Sourceforge sind sog. contributed Plugins erhältlich.
Die config.py ist entsprechend anzupassen.
config.py
... py["plugin_dirs"] = ["/data/pyblosxom/plugins"] ...
Das Handbuch ist unter Sourceforge zu finden.