Nerdkrams
Ins Internet schreiben mit Pelican

(Vorbemerkung: Dies ist eine leicht überarbeitete Variante eines Beitrags, den ich schon anderswo veröffentlicht hatte.)

Mir ist schon seit einer Weile aufgrund von Performance- und Sicherheitsproblemen danach, WordPress, das ich seit inzwischen neun Jahren nutze, auf diesem kleinen Textveröffentlichungsdings einmal durch etwas Anderes auszutauschen. Nicht aber gegen ein anderes „richtiges“ Blogsystem wie s9y und Ghost, denn damit hätte ich nicht viel gewonnen, hingegen einiges verloren (gerade auch weil Ghost immer noch kein brauchbares Kommentarsystem hat und ich sicherlich nicht anfangen werde, interessierten Kommentatoren JavaScript aufzuzwingen). Interessanter sind da schon Seitengeneratoren wie Jekyll und dessen Frameworks (etwa Octopress), die zwar auch meist keine Kommentarfunktion, dafür aber viele weitere Vorteile mitbringen, zum Beispiel, dass man sein Blog mit git versionieren kann und nicht auf einen PHP/MySQL-Stack angewiesen ist, weil die Website direkt als HTML ausgegeben wird und nicht bei jedem Aufruf neu erzeugt werden muss. Franz hat die Vorteile eines solchen Bloggenerators einmal aufgezählt.

Nun ist Jekyll längst nicht das einzige Werkzeug dieser Art, die Auswahl ist riesig; gerade, wenn man in der Sprache Ruby nicht heimisch ist, ist das Erzeugen eines neuen Blogeintrags in (zum Beispiel) Octopress auch eine unnötig komplizierte Sache. Außerdem scheint es unmöglich zu sein, ein Octopress-Theme zu entwickeln, das nicht aussieht wie ausgekotzt. Oder hat es nur noch niemand versucht?

Warum nicht Pelican?

Unter den Alternativen besonders interessant finde ich Pelican, das anderswo als einfach beschrieben wird und jüngst in Version 3.5 erschien. Ein guter Anlass, es mir mal anzusehen. Dafür brauche ich ja nur Python 2.7 und einen beliebig einfachen Webserver, der Rest verläuft nach der Anleitung. Wird die falsche Python-Version – standardmäßig ist das oft nicht 2.7 – verwendet, so schlägt pip install pelican so erheblich fehl, dass der anschließende Aufruf von pelican-quickstart nur zwei Syntaxfehler zur Folge hat. Vor der Installation sollte mit python -V also dringend überprüft werden, ob Python 2.7 die aktive Version ist.

Quickstart!

pelican-quickstart funktioniert danach jedenfalls wie gewünscht: Eintippen, ein paar Fragen beantworten und es kann losgehen. Dies richtet im Wesentlichen die Datei pelicanconf.py ein, die sozusagen das Organisatorische übernimmt: Blogtitel, Permalinkstruktur und ähnliche Optionen werden dort festgelegt. Bei der Gelegenheit sollte dort gleich der OUTPUT_PATH so angepasst werden, dass die erzeugten HTML-Dateien im richtigen Ordner landen.

Zeit für den ersten Testartikel.

pelican benutzt standardmäßig den Ordner ./content/ für Entwürfe. Wenn per pip oder easy_install eine lauffähige Version von Markdown installiert ist, versteht es auch Markdown, eine Auszeichnungssprache, die von Diaspora, Ghost, Stack Overflow, GitHub und weiteren Plattformen bereits benutzt wird und die zu lernen ich also sowieso empfehle.

Pelican verwendet wie wohl alle statischen Generatoren Reintextdateien statt einer komplexen Datenbank. Es lässt sich also schlicht Folgendes tun:

Der Dateiname ist weitgehend egal, ihr könnt die Beiträge also auch durchnummerieren oder das Datum in den Dateinamen schreiben.

Ein funktionierendes Beispiel für so einen Blogartikel mit Kategorien, Tags und modifiziertem Permalink (slug) sieht jedenfalls so aus:

Title: Beispielbeitrag

Date: 2014-10-28 20:00

Modified: 2014-10-28 20:01
Category: Nerdkrams
Tags: hirnfick,pelican
Slug: ein-beispiel
Authors: tux.
Summary: Der Beispielbeitrag ist ein Beispiel.
Dies ist der erste Beitrag, den ich auf Pelican schreibe.
Seht mal, *Markdown* **geht auch!**.
<u>HTML übrigens auch.</u>

Wie ihr seht, gehört der erste Teil eines Blogartikels immer den Metadaten, ihr könnt also ziemlich leicht den Namen des Autors oder das Veröffentlichungsdatum ändern. Mit Emacs und org-mode ließe sich das automatisieren, aber sicherlich gibt es da viele weitere Möglichkeiten. Es ist natürlich auch möglich, das Datum aus dem Dateisystem zu übernehmen.

Release, release.

Wenn euch der Beispielbeitrag so gefällt, könnt ihr ihn veröffentlichen:

Ta-dah:

Pelican

Plugins

So flexibel das Pelican-System wegen der Kompilierung auch erscheinen mag, natürlich gibt es immer etwas, was für den eigenen Einsatz fehlt. WordPress wird ja auch für seine Erweiterbarkeit von vielen Nutzern geschätzt. Aber wer sagt, dass „statisch“ immer „unflexibel“ bedeuten muss?

Tatsächlich gibt es auch für Pelican eine Vielzahl an Plugins, die den erzeugten HTML-Seiten etwas Würze verleihen. Anzeige des Gravatars für Artikelautoren? Funktioniert. YouTube? Etwas umständlich, aber kein Problem. Eine Sitemap für die SEO-Verrückten? Warum nicht?

Alle Funktionen sind da, aber es könnte noch etwas hübscher aussehen? Auch Pelican kennt Themes, eine Vielzahl von ihnen ist auf GitHub zu finden. Es genügt, ein Theme in den Ordner /themes zu kopieren und in der Datei pelicanconf.py einzutragen – beim nächsten Generieren wird es automatisch verwendet.

Kommentare

Da die mit Pelican erzeugte Website nicht erst beim Aufruf erzeugt wird, sind Kommentare, die in einer Datenbank liegen, hier nicht ohne Weiteres möglich. Die offensichtliche Lösung, statische Kommentare im Stil klassischer Leserbriefe per E-Mail zu ermöglichen, ist auf Websites mit einer hohen Frequenz an Benutzerinteraktion mitunter zu aufwändig. Wer damit leben kann, dass Kommentare JavaScript voraussetzen, der kann zu etablierten Fremdanbietern wie Disqus, das in viele Pelican-Themes bereits integriert ist, oder IntenseDebate greifen oder ein selbstgehostetes Kommentarsystem wie etwa HashOver oder Isso einbinden. Dafür muss nur im Theme eine entsprechende Anpassung erfolgen, bei der Gelegenheit lassen sich die Kommentare auch gleich per CSS optisch anpassen.

Fazit

Alles in Allem: Pelican ist mehr als nur ein nettes Spielzeug. Es gibt einen WordPress-Import und Plugins für allerlei Einsatzzwecke. Ich empfehle Pelican mal im Auge zu behalten. Es muss ja nicht immer ein aufgeblähtes CMS sein.

Senfecke

Bisher gibt es 7 Senfe:

  1. Wirst du diesen Blog dann (irgendwann/ demnäst) damit ersetzen?

    • Sofern WordPress nicht bis dahin wieder benutzbar wird, es einen datenschutzkonformen Kommentarbereich mit Spamfilter für Pelican gibt und ich mal die Muße habe, das Theme dieses Nichtblogs auf Pelican zu portieren: ja. Ich rechne allerdings nicht mehr mit diesem Jahr. Erst mal die Abschlussarbeit fertig schreiben. Und die Musikrückschau 2014/2 steht ja auch noch an.

  2. Ich hatte dieses Gedanken x-fach herumgewälzt und bin im Laufe der letzten zehn Jahre+ an Bloggen sogar mehrfach zwischen WordPress, Wiki-Engines zum Bloggen, Blosxom Py & Php, Jekyll, Octopress, Pelican, diversen statischen Desktop-Generatoren in JS, diverse sonstige Ruby-Engines bis hin zur minimalistischen händischen Erstellung via Inlcudes, etwas simplen PHP und puren Textfiles gewechselt. Und bin jedes Mal dann doch wieder bei WordPress gelandet.

    Der Sicherheitsfaktor mag stimmen, aber schlussendlich und im realen Alltag haben die statischen Generatoren zumindest bei mir ein paar Schwachstellen gezeigt… die Renderzeit z.B. nach 500+ Einträgen wird oft ein Problem und ist mühsam – speziell, wenn man immer wieder ein paar Kleinigkeiten nochmals ändert. Auch wenn mittlerweile nur der Beitrag selber und Archiv-Seiten neu „gerendert“ werden, dauert es oft sehr lange und steigt mit Anzahl der Beiträge.

    Ein anderes Fazit, das ich kennen lernen durfte bei vielen anderen Bloggern und auch mir selber, dass die Anzahl der publizierten Beiträge nach dem Umstieg auf eine statische Engines nach einiger Zeit deutlich nachlässt. Warum das so ist oder ob es tatsächlich am Umstand der Engine liegt, weiß ich nicht – aber ich blogge mit WordPress, so sehr ich es auch nicht mag, deutlich öfter und mal eben leichter einfach so (auch von anderen Geräten – da einfach Login, lostippen, publish und fertig.). Die Rumbastelei mit Disqus, PHP-Comments und anderen Dingen ist zwar unkompliziert im Prinzip, aber bis heute finde ich das WP-Kommentarsystem dennoch noch immer schlicht und einfach und relativ simpel – auch für den User. Disqus und Co. mit aktiviertem Blocker für JS-Zeugs und Co? Nada, kein Login dann möglich. Und paar andere Kleinigkeiten.

    Der Workflow ist bei statischen Engines zwar auch simple – unter Linux XY hatte ich einfach ein paar Skripte selber zusammengeklopft, die ich einfach startete und dann nach dem Titel abgefragt wurde, dann nach dem „Content“, optional Bilder und Co. und danach der automatische Output mit Upload zum Server. Fühlt sich großartig an, einen simplen, puren HTML-Blog dort liegen zu haben. Klein, unangreifbar, extrem schnell, einfach zu warten, zu sichern und nix kann kaputt gehen. Aber in Summe – je nach Engine und Background – ladet man sich dann ebenso wieder dutzende Bibliotheken, Erweiterungen und Co. runter, damit die Engine am Rechner überhaupt werkt. Bei Jekyll und purer OS-Basis ist die Anzahl der Biblios und MB-Größe über dem von WordPress am Server durch die ganzen Zusätze und bei einem Wechsel vor dem Gerät und Neueinrichtung traten dann auch gleich mal Probleme wie unterschiedliche Versionen von RubyBla und anderen Dingen auf, kein Problem natürlich, neu zusätzlich halt installieren oder ersetzen, usw… – aber in Summe hat man genauso wieder so ein „Packerl“ an Datenwulst, das man pflegt und hegt.
    Blosxom als Single-File-Engine der ersten Stunde (und ehemalig eine der ersten Blog-Engines in grauer Urzeit, 2000er-Ära) ist da vielleicht die beste Lösung (hatte ich drei~vier Jahre lang problemlos am laufen) – hatte für mich den Abschlussgrund allerdings dann vor zwei Jahren, weil mobiles zugreifen via Smartphone, Tablet und Co. zum Bloggen ebenso weg fällt und der Zugriff via SSh auch immer so eine Sache ist und manchmal hakt.

    Also keine Lanze für WP, aber ich bin noch immer auf der Suche unverändert und nicht fündig geworden bis heute. Am liebsten eine Mini-Blog-Engine mit puren Textfiles, einer einzelnen Datei, simple, responsive Möglichkeit auch von woanders oder unterwegs zugreifen und bloggen (oder ändern) zu können, ein schlichtes Kommentarsystem mit einer Datei und den Rest bitte per Hand. Und eine, die aber nicht nach 500 oder 1000 Beiträgen schlapp macht oder 15 Minuten „rendern“ muss für einmal Wort ausbessern. :x :)

  3. PINGBACK: Die Software hinter Plasisent | Plasisent

Senf dazugeben:

:) 
:D 
:( 
:o 
8O 
:? 
8) 
:lol: 
:x 
:aufsmaul: 
:P 
:ups: 
:cry: 
:evil: 
:twisted: 
mehr...
 

Erlaubte Tags:
<strong> <em> <pre class="" title="" data-url=""> <code class="" title="" data-url=""> <a href="" title=""> <img src="" title="" alt=""> <blockquote> <q> <b> <i> <del> <span style="" class="" title="" data-url=""> <strike>

Datenschutzhinweis: Ihre IP-Adresse wird nicht gespeichert. Details finden Sie hier.

Du willst deinen Senf dazugeben, dir ist aber der Senf ausgegangen? Dann nutz den SENFOMATEN! Per einfachem Klick kannst du fertigen Senf in das Kommentarfeld schmieren, nur dazugeben musst du ihn noch selbst.