stalk me here ----> github twitter rss Feedback

Suchergebnis

Umstieg von Wordpress nach Jekyll

Artikel vom 17.12.2011, Bereich: blognews

Mein Blog hat sich in den letzten Tagen ziemlich verändert. Der Grund dafür ist, dass ich Wordpress verlasse und hier in Zukunft auf ein neues Tool mit dem schönen Namen jekyll setzen werde! :) Dieser Artikel fasst meine Beweggründe und Erfahrungen bisher zusammen.

Was ist Jekyll?

Oh richtig, das hatte ich ja noch gar nicht gesagt. Jekyll ist ein in Ruby geschriebener Postgenerator von Tom Preston-Werner (github.com cofounder):

Jekyll is a simple, blog aware, static site generator. It takes a template directory (representing the raw form of a website), runs it through Textile or Markdown and Liquid converters, and spits out a complete, static website suitable for serving with Apache or your favorite web server.

Wie schon geschrieben ist es ein Postgenerator und kein Blogging-Framework, der direkte Vergleich mit Wordpress wäre also eher unfair. Jekyll will kein CMS mit komplettem Admin Control Panel und anderweitigen Komfortfunktionen sein, denn es ist ein schlankes Kommandozeilen-Tool, das aus den vorliegenden Artikel- und Layout-Dateien statische HTML-Webseiten generiert. Das mag nun Einsteiger wahrscheinlich abschrecken, für mich ist es aber genau richtig. Da Jekyll nur normale HTML-Dateien erzeugt, läuft es beinahe auf jedem beliebigen Webserver und benötigt auch keine Datenbank, die im Hintergrund die ständig gleichen Beiträge ausließt!

Meine Motivation zum Umstieg

Vor einiger Zeit hatte ich bereits zusammen mit einem Freund überlegt, ein statisches Blogsystem zu programmieren. Wie das bei großen neuen Projekten und wenig freier Zeit so ist, blieb das jedoch zunächst nur bei Planungsphase. ;) Bei meiner github-Suche nach ähnlichen Projekten stieß ich schnell auf jekyll. Andererseits empfand ich das Bloggen unter Wordpress oftmals als zu aufwändig. Wordpress ist super, wenn man schnell eine Blog aufsetzen will: Es ist sehr Anpassbar durch die vielen Erweiterungen und Themes, aber dennoch hat es Macken. Der eigentliche Erstellungsprozess für neue Artikel war mir oft zu aufwändig. Beispielsweise generiert der Wordpress-Editor viel unsinnigen HTML-Code, kam nicht immer gut mit eingefügten Codeschnipseln oder Absatzabständen zurecht. Viele kleine Dinge haben mich gestört. Die vielen Erweiterungen führen eben auch dazu, dass man sich einen Blog eher “zusammen-klickt”, als ihn komplett von Grund auf selbst an eigene Bedürfnisse anzupassen. Manche Plugins entwickeln dann mitunter ein Eigenleben und geben dann Anlass zu einer nervtötenden Fehlersuche… Was bisher bei mir auf dem Rechner mit Archlinux als Betriebssystem galt, gilt nun auch hier im Blog: KISS (Keep it simple, stupid) - und den Rest selbst machen!

Die Vorteile von Jekyll

Vorteile für mich im Vergleich zu Wordpress:

(Leicht optimierter) Markdown-Artikel vs. importierter Wordpress-Artikel

Erfahrungen & Hürden beim Umstieg

Import

Das Importieren alter Wordpress-Artikel ist sehr gut im Wiki beschrieben und funktionierte soweit auch gut. Leider hat der WYSIWYG-Editor von Wordpress häufig unnötigen HTML-Code erzeugt, also Dinge wie:

<p style="text-align: justify;"></p>

Da das sehr unterschiedliche Dinge waren, musste ich die Posts nachträglich also doch noch von Hand bearbeiten. Teilweise hat mir dabei Markdownify geholfen, das HTML-Text in Markdown-Markup umwandelt.

“Baseurl”-Probleme

Mein Blog liegt nicht im Hauptverzeichnis des Webservers sondern im Unterordner /blog/. Wenn das der Fall ist, muss das bei jekyll konkret angegeben werden, daher verwende ich in meiner jekyll Konfigurationsdatei (_config.yml) die Einstellung

baseurl: /blog

url: http://ganz-sicher.net/blog

Bei allen Adressen (z.B. beim href-Attribut von Links) muss zusätzlich ein {{site.baseurl}} vorangestellt werden. Bei Bilder in Artikeln verwende ich die direkte Adresse (also mit vorangestelltem {{site.url}}, damit diese auch mit dem RSS-Feed (Feedburner, siehe auch) funktionieren. Diese Einstellungen hatte ich beim Ersten durchgehen der Artikel nicht bedacht. Glücklicherweise kann man bekannte Linuxtools verwenden um die Dateien zu verändern, also konnte ich das auch nachträglich lösen per:

cd _posts
sed -i 's/="\/wp-content/="http://ganz-sicher.net/blog\/wp-content/g' *

Sehr zu Hilfe kommt mir auch die verbesserte Tab Completion bei zsh (ich benutze die alternative Shell zusammen mit oh-my-zsh), denn nun kann ich im _posts-Ordner einfach einen beliebigen Begriff aus dem Beitragstitel eingeben und die Tabtaste drücken und kann so sehr schnell die gesuchte Datei finden und bearbeiten.

Kommentare nun mit disqus

Der Kommentarbereich ist im Idealfall nicht statisch, sondern ändert sich laufend. Deshalb verwende ich den Service Disqus. Die Kommentare lassen sich - sofern sich die Adressen der Artikel nicht ändern - leicht von Wordpress zu Disqus importieren und dann später auch mit jekyll anzeigen. Bei deutschen Sonderzeichen (Umlaute, ß) hat disqus bei mir teilweise Darstellungsprobleme, die aber wohl durch den Import kommen und nicht an Disqus selbst liegen.

HTML-Generierung bei Jekyll

Jekyll erzeugt aus den Dateien und Ordnern (ausgeschlossen sind Ordner mit vorangestelltem Unterstrich) statische HTML-Dateien, für Templates können liquid filter benutzt werden, damit die Quelldateien übersichtlich bleiben. Ein Manko hat Jekyll aber doch: Es gibt keine Möglichkeit zur Inkrementellen Generierung. Auch wenn beispielsweise nur ein neuer Beitrag erstellt wurde, wird das gesamte Projekt neu generiert. Bei kleineren Blog (wie bei mir) fällt das nicht so sehr in’s Gewicht, die Erstellung dauert nur wenige Sekunden. Bei größeren Seiten könnte das aber ein echtes Problem werden. Glücklicherweise liegt Jekyll in OpenSource-Form auf github und dementsprechend gibt es auch Forks anderer Nutzer, die sich darum bereits gekümmert haben.

Beitragsauszug wie bei Wordpress

Bei Wordpress wurden Einleitung und Artikel durch die Kennzeichnung <!--more--> voneinander getrennt. Das Funktioniert natürlich standardmäßig bei Jekyll nicht mehr, daher habe ich mir ein Mini-Plugin geschrieben, das diese Trennung vornimmt. Mittels {{ post.content | postmorefilter }} kann man nun auf die Einleitung eines Artikels in der index.html zugreifen.

Artikelerstellung & Posts auf github

Natürlich habe ich auch ein kleines Python Script geschrieben, um auf einheitlich Weise neue Beiträge erstellen zu können. Zusätzlich verwende ich nun git als Versionsverwaltung für meinen Blog und synchronisiere dies mit github.com:

https://github.com/pylight/gsn

Jedem interessierten steht es selbstverständlich frei, dieses Projekt zu forken und nach den eigenen Wünschen anzupassen. (Hinweise zur Lizenz)

Bilder aus Artikeln befinden sich natürlich nicht im Repository und liegen nur auf dem eigenen Server, ich überlege derzeit noch, eventuell einen anderen Dienst dafür zu benutzen, damit die Bilder nicht immer gesondert hoch geladen werden müssen.

Noch einige ToDos

Natürlich gibt es auch noch einige Dinge, die ich noch verbessern möchte, z.B:

Zwischenfazit & Links

Jekyll ist nicht für Jedermann, denn es richtet sich nicht an Einsteiger, sondern eher an die technisch versiertere Fraktion. Wenn man sich aber zu jener zählt und ein wenig Zeit kann & aufbringen will, um das Projekt an eigene Bedürfnisse anzupassen, wird man auf jeden Fall mit einem tollen System belohnt, mit dem sich auch komfortabel Bloggen lässt. Jekyll macht mir jetzt schon mehr Spaß als Wordpress, es fühlt sich mehr wie das eigene und nicht wie ein fremdes System an. ;D Falls der Jekyll-Ansatz Anklang findet, das System dir aber zu Feature-arm erscheint: mit Octopress gibt es auch ein Framework, das auf jekyll aufsetzt und ähnliche Funktionen wie Wordpress anbietet.

Artikel, die mir beim Umstieg geholfen haben

Interesse geweckt?

Für Fragen bezüglich Jekyll stehe ich natürlich gerne zur Verfügung. Außerdem freue ich mich über eure Reaktionen: Wie gefällt euch der neue Blog?

Current Projects