Nerdkrams
Ins Internet schreiben mit Pelican

(Vorbe­merkung: Dies ist eine leicht über­ar­beit­ete Vari­ante eines Beitrags, den ich schon ander­swo veröf­fentlicht hat­te.)

Mir ist schon seit ein­er Weile auf­grund von Per­for­mance- und Sicher­heit­sprob­le­men danach, Word­Press, das ich seit inzwis­chen neun Jahren nutze, auf diesem kleinen Textveröf­fentlichungs­d­ings ein­mal durch etwas Anderes auszu­tauschen. Nicht aber gegen ein anderes “richtiges” Blogsys­tem wie s9y und Ghost, denn damit hätte ich nicht viel gewon­nen, hinge­gen einiges ver­loren (ger­ade auch weil Ghost immer noch kein brauch­bares Kom­men­tarsys­tem hat und ich sicher­lich nicht anfan­gen werde, inter­essierten Kom­men­ta­toren JavaScript aufzuzwin­gen). Inter­es­san­ter sind da schon Seit­en­gener­a­toren wie Jekyll und dessen Frame­works (etwa Octo­press), die zwar auch meist keine Kom­men­tar­funk­tion, dafür aber viele weit­ere Vorteile mit­brin­gen, zum Beispiel, dass man sein Blog mit git ver­sion­ieren kann und nicht auf einen PHP/MySQL-Stack angewiesen ist, weil die Web­site direkt als HTML aus­gegeben wird und nicht bei jedem Aufruf neu erzeugt wer­den muss. Franz hat die Vorteile eines solchen Bloggen­er­a­tors ein­mal aufgezählt.

Nun ist Jekyll längst nicht das einzige Werkzeug dieser Art, die Auswahl ist riesig; ger­ade, wenn man in der Sprache Ruby nicht heimisch ist, ist das Erzeu­gen eines neuen Blo­gein­trags in (zum Beispiel) Octo­press auch eine unnötig kom­plizierte Sache. Außer­dem scheint es unmöglich zu sein, ein Octo­press-Theme zu entwick­eln, das nicht aussieht wie aus­gekotzt. Oder hat es nur noch nie­mand ver­sucht?

Warum nicht Pel­i­can?

Unter den Alter­na­tiv­en beson­ders inter­es­sant finde ich Pel­i­can, das ander­swo als ein­fach beschrieben wird und jüngst in Ver­sion 3.5 erschien. Ein guter Anlass, es mir mal anzuse­hen. Dafür brauche ich ja nur Python 2.7 und einen beliebig ein­fachen Web­serv­er, der Rest ver­läuft nach der Anleitung. Wird die falsche Python-Ver­sion — stan­dard­mäßig ist das oft nicht 2.7 — ver­wen­det, so schlägt pip install pel­i­can so erhe­blich fehl, dass der anschließende Aufruf von pel­i­can-quick­start nur zwei Syn­taxfehler zur Folge hat. Vor der Instal­la­tion sollte mit python ‑V also drin­gend über­prüft wer­den, ob Python 2.7 die aktive Ver­sion ist.

Quick­start!

pel­i­can-quick­start funk­tion­iert danach jeden­falls wie gewün­scht: Ein­tip­pen, ein paar Fra­gen beant­worten und es kann los­ge­hen. Dies richtet im Wesentlichen die Datei pelicanconf.py ein, die sozusagen das Organ­isatorische übern­immt: Blogti­tel, Perma­linkstruk­tur und ähn­liche Optio­nen wer­den dort fest­gelegt. Bei der Gele­gen­heit sollte dort gle­ich der OUTPUT_PATH so angepasst wer­den, dass die erzeugten HTML-Dateien im richti­gen Ord­ner lan­den.

Zeit für den ersten Tes­tar­tikel.

pel­i­can benutzt stan­dard­mäßig den Ord­ner ./content/ für Entwürfe. Wenn per pip oder easy_install eine lauf­fähige Ver­sion von Mark­down instal­liert ist, ver­ste­ht es auch Mark­down, eine Ausze­ich­nungssprache, die von Dias­po­ra, Ghost, Stack Over­flow, GitHub und weit­eren Plat­tfor­men bere­its benutzt wird und die zu ler­nen ich also sowieso empfehle.

Pel­i­can ver­wen­det wie wohl alle sta­tis­chen Gen­er­a­toren Rein­text­dateien statt ein­er kom­plex­en Daten­bank. Es lässt sich also schlicht Fol­gen­des tun:

emacs content/new-blog-post.md

Der Dateiname ist weit­ge­hend egal, ihr kön­nt die Beiträge also auch durch­num­merieren oder das Datum in den Dateina­men schreiben.

Ein funk­tion­ieren­des Beispiel für so einen Blog­a­r­tikel mit Kat­e­gorien, Tags und mod­i­fiziertem Perma­link (slug) sieht jeden­falls 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 Blog­a­r­tikels immer den Meta­dat­en, ihr kön­nt also ziem­lich leicht den Namen des Autors oder das Veröf­fentlichungs­da­tum ändern. Mit Emacs und org-mode ließe sich das automa­tisieren, aber sicher­lich gibt es da viele weit­ere Möglichkeit­en. Es ist natür­lich auch möglich, das Datum aus dem Dateisys­tem zu übernehmen.

Release, release.

Wenn euch der Beispiel­beitrag so gefällt, kön­nt ihr ihn veröf­fentlichen:

cd ~
pelican

Ta-dah:

Pelican

Plu­g­ins

So flex­i­bel das Pel­i­can-Sys­tem wegen der Kom­pilierung auch erscheinen mag, natür­lich gibt es immer etwas, was für den eige­nen Ein­satz fehlt. Word­Press wird ja auch für seine Erweit­er­barkeit von vie­len Nutzern geschätzt. Aber wer sagt, dass “sta­tisch” immer “unflex­i­bel” bedeuten muss?

Tat­säch­lich gibt es auch für Pel­i­can eine Vielzahl an Plu­g­ins, die den erzeugten HTML-Seit­en etwas Würze ver­lei­hen. Anzeige des Gra­vatars für Artike­lau­toren? Funk­tion­iert. YouTube? Etwas umständlich, aber kein Prob­lem. Eine Sitemap für die SEO-Ver­rück­ten? Warum nicht?

Alle Funk­tio­nen sind da, aber es kön­nte noch etwas hüb­sch­er ausse­hen? Auch Pel­i­can ken­nt Themes, eine Vielzahl von ihnen ist auf GitHub zu find­en. Es genügt, ein Theme in den Ord­ner /themes zu kopieren und in der Datei pelicanconf.py einzu­tra­gen — beim näch­sten Gener­ieren wird es automa­tisch ver­wen­det.

Kom­mentare

Da die mit Pel­i­can erzeugte Web­site nicht erst beim Aufruf erzeugt wird, sind Kom­mentare, die in ein­er Daten­bank liegen, hier nicht ohne Weit­eres möglich. Die offen­sichtliche Lösung, sta­tis­che Kom­mentare im Stil klas­sis­ch­er Leser­briefe per E‑Mail zu ermöglichen, ist auf Web­sites mit ein­er hohen Fre­quenz an Benutzer­in­ter­ak­tion mitunter zu aufwändig. Wer damit leben kann, dass Kom­mentare JavaScript voraus­set­zen, der kann zu etablierten Frem­dan­bi­etern wie Dis­qus, das in viele Pel­i­can-Themes bere­its inte­gri­ert ist, oder IntenseDe­bate greifen oder ein selb­st­ge­hostetes Kom­men­tarsys­tem wie etwa HashOver oder Isso ein­binden. Dafür muss nur im Theme eine entsprechende Anpas­sung erfol­gen, bei der Gele­gen­heit lassen sich die Kom­mentare auch gle­ich per CSS optisch anpassen.

Faz­it

Alles in Allem: Pel­i­can ist mehr als nur ein nettes Spielzeug. Es gibt einen Word­Press-Import und Plu­g­ins für aller­lei Ein­satzz­wecke. Ich empfehle Pel­i­can mal im Auge zu behal­ten. Es muss ja nicht immer ein aufge­bläht­es CMS sein.

Senfecke:

    • Sofern Word­Press nicht bis dahin wieder benutzbar wird, es einen daten­schutzkon­for­men Kom­men­tar­bere­ich mit Spam­fil­ter für Pel­i­can gibt und ich mal die Muße habe, das Theme dieses Nicht­blogs auf Pel­i­can zu portieren: ja. Ich rechne allerd­ings nicht mehr mit diesem Jahr. Erst mal die Abschlus­sar­beit fer­tig schreiben. Und die Musikrückschau 2014/2 ste­ht ja auch noch an.

  1. Ich hat­te dieses Gedanken x‑fach herumgewälzt und bin im Laufe der let­zten zehn Jahre+ an Bloggen sog­ar mehrfach zwis­chen Word­Press, Wiki-Engines zum Bloggen, Blosx­om Py & Php, Jekyll, Octo­press, Pel­i­can, diversen sta­tis­chen Desk­top-Gen­er­a­toren in JS, diverse son­stige Ruby-Engines bis hin zur min­i­mal­is­tis­chen händis­chen Erstel­lung via Inl­cud­es, etwas sim­plen PHP und puren Textfiles gewech­selt. Und bin jedes Mal dann doch wieder bei Word­Press gelandet.

    Der Sicher­heits­fak­tor mag stim­men, aber schlussendlich und im realen All­t­ag haben die sta­tis­chen Gen­er­a­toren zumin­d­est bei mir ein paar Schwach­stellen gezeigt… die Ren­derzeit z.B. nach 500+ Ein­trä­gen wird oft ein Prob­lem und ist müh­sam — speziell, wenn man immer wieder ein paar Kleinigkeit­en nochmals ändert. Auch wenn mit­tler­weile nur der Beitrag sel­ber und Archiv-Seit­en neu “geren­dert” wer­den, dauert es oft sehr lange und steigt mit Anzahl der Beiträge.

    Ein anderes Faz­it, das ich ken­nen ler­nen durfte bei vie­len anderen Blog­gern und auch mir sel­ber, dass die Anzahl der pub­lizierten Beiträge nach dem Umstieg auf eine sta­tis­che Engines nach einiger Zeit deut­lich nach­lässt. Warum das so ist oder ob es tat­säch­lich am Umstand der Engine liegt, weiß ich nicht — aber ich blogge mit Word­Press, so sehr ich es auch nicht mag, deut­lich öfter und mal eben leichter ein­fach so (auch von anderen Geräten — da ein­fach Login, lostip­pen, pub­lish und fer­tig.). Die Rum­bastelei mit Dis­qus, PHP-Com­ments und anderen Din­gen ist zwar unkom­pliziert im Prinzip, aber bis heute finde ich das WP-Kom­men­tarsys­tem den­noch noch immer schlicht und ein­fach und rel­a­tiv sim­pel — auch für den User. Dis­qus und Co. mit aktiviertem Block­er für JS-Zeugs und Co? Nada, kein Login dann möglich. Und paar andere Kleinigkeit­en.

    Der Work­flow ist bei sta­tis­chen Engines zwar auch sim­ple — unter Lin­ux XY hat­te ich ein­fach ein paar Skripte sel­ber zusam­mengek­lopft, die ich ein­fach startete und dann nach dem Titel abge­fragt wurde, dann nach dem “Con­tent”, option­al Bilder und Co. und danach der automa­tis­che Out­put mit Upload zum Serv­er. Fühlt sich großar­tig an, einen sim­plen, puren HTML-Blog dort liegen zu haben. Klein, unan­greif­bar, extrem schnell, ein­fach zu warten, zu sich­ern und nix kann kaputt gehen. Aber in Summe — je nach Engine und Back­ground — ladet man sich dann eben­so wieder dutzende Bib­lio­theken, Erweiterun­gen und Co. runter, damit die Engine am Rech­n­er über­haupt werkt. Bei Jekyll und pur­er OS-Basis ist die Anzahl der Bib­lios und MB-Größe über dem von Word­Press am Serv­er durch die ganzen Zusätze und bei einem Wech­sel vor dem Gerät und Neuein­rich­tung trat­en dann auch gle­ich mal Prob­leme wie unter­schiedliche Ver­sio­nen von Ruby­Bla und anderen Din­gen auf, kein Prob­lem natür­lich, neu zusät­zlich halt instal­lieren oder erset­zen, usw… — aber in Summe hat man genau­so wieder so ein “Pack­erl” an Daten­wulst, das man pflegt und hegt.
    Blosx­om als Sin­gle-File-Engine der ersten Stunde (und ehe­ma­lig eine der ersten Blog-Engines in grauer Urzeit, 2000er-Ära) ist da vielle­icht die beste Lösung (hat­te ich drei~vier Jahre lang prob­lem­los am laufen) — hat­te für mich den Abschlussgrund allerd­ings dann vor zwei Jahren, weil mobiles zugreifen via Smart­phone, Tablet und Co. zum Bloggen eben­so weg fällt und der Zugriff via SSh auch immer so eine Sache ist und manch­mal hakt.

    Also keine Lanze für WP, aber ich bin noch immer auf der Suche unverän­dert und nicht fündig gewor­den bis heute. Am lieb­sten eine Mini-Blog-Engine mit puren Textfiles, ein­er einzel­nen Datei, sim­ple, respon­sive Möglichkeit auch von woan­ders oder unter­wegs zugreifen und bloggen (oder ändern) zu kön­nen, ein schlicht­es Kom­men­tarsys­tem mit ein­er Datei und den Rest bitte per Hand. Und eine, die aber nicht nach 500 oder 1000 Beiträ­gen schlapp macht oder 15 Minuten “ren­dern” muss für ein­mal Wort aus­bessern. :x :)

    • Mobiles Bloggen mit Pel­i­can geht eigentlich recht leicht: Mobile­Org und ein post-com­mit-Hook auf deinem git-Serv­er.

      Ist halt eine arge Bastelei, bis alles geht.

Comments are closed.

https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_smilenew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_biggrin2.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_sadnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_eek.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_shocked.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_confusednew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_coolnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_lol.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_madnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_aufsmaul.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_seb_zunge.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_blushnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_frown.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_twistedevil1.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_twistedevil2.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/icon_mad.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_rolleyesnew.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_wink2.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_idea2.gif  https://tuxproject.de/blog/wp-content/plugins/wp-monalisa/icons/smiley_emoticons_arrow2.gif 
mehr …
 

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

Datenschutzhinweis: Deine IP-Adresse wird nicht gespeichert. Details findest du hier.