Pelican Blog Generator

15. March 2012. Tagged python, website, pelican.

Ich nutze jetzt Pelican um meine Seite zu generieren.

Die meisten Leute werden Pelican nicht kennen, deswegen stelle ich es hier mal vor. Pelican ist ein Programm, dass in Python geschrieben wurde, und aus ReStructuredText oder Markdown (zumindest im Moment noch) einen statischen Blog generiert, den ihr dann auf euren Webspace hochladen könnt. Das hat mehrere Vorteile, aber auch Nachteile.

Vorteile

Wenn ihr das Zeug auf eurem Webspace habt, ist es wahnsinnig schnell. Es muss nichts generiert werden, keine Datenbank abgerufen werden, nichts. Es funktioniert einfach.

Nachteile

Ihr müsst die Sachen im Markup erstellen und irgendwo zwischen lagern, entweder lokal oder auf eurem Webspace und nach jeder Änderung die Seite neu generieren und gegebenenfalls hochladen.

Installation & Konfiguration

Ich habe Pelican lokal installiert und verwalte dementsprechend auch lokal meinen Blog. Installieren geht ganz einfach mit:

1
sudo pip install pelican

Danach solltet ihr einen Ordner auswählen, in dem ihr euer Markup aufbewahrt, ich habe folgende Dateistruktur:

1
2
3
4
5
6
7
8
9
blog/
-> content/     # Hier kommen die ganzen Markup-Dokumente rein
---> post1.md   # Die Posts
---> post2.md
---> pages/     # Möchte man ein paar statische Seiten, sollten die hier rein.
-----> about.md # eine statische Seite
-> output/      # Hier speichert Pelican das .html
-> theme/       # Hier liegt mein theme
-> settings.py  # Meine Pelican Konfigurationsdatei

Und meine settings.py sieht so aus:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#encoding: utf-8 

AUTHOR = 'Alexander Jung-Loddenkemper'
SITENAME = 'julo.ch'
SITEURL = 'http://pelican.julo.ch'
TIMEZONE = 'Europe/Zurich'
DEFAULT_PAGINATION = 4
THEME = '/Users/alexander/Projekte/blog/theme'
CLEAN_URLS=True

GOOGLE_ANALYTICS='UA-28190962-1'

GITHUB_URL = 'http://github.com/alexanderjulo'

FEED_RSS= 'feeds/all.rss.xml'
CATEGORY_FEED_RSS = 'feeds/%s.rss.xml'

Außerdem habe ich noch ein kleines Alias, das den Blog generiert und dann die veränderten Seiten auf meinen Uberspace synct:

1
pelican ~/Projekte/blog/content -s ~/Projekte/blog/settings.py && rsync -rpu ~/Projekte/blog/output/* alexex@julo.ch:/home/alexex/hosts/www.julo.ch

Und damit die CLEAN_URLS-Option auch was bringt, eine kleine .htaccess:

1
2
3
4
5
6
RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.+)/$ $1.html [L]

So einfach ist das mit Pelican.

Als Theme nutze ich übrigens eine leicht modifizierte Version vom mnmlist theme.