Mein neues Blog mit Nikola
Mein Blog ist nun endlich auf meinen eigenen Server umgezogen und wird jetzt von Nikola generiert. Nikola ist ein in Python geschriebener Static Site Generator von Roberto Alsina, Static heißt: kein PHP, keine Datenbank, kein krudes CMS, nur schlichtes HTML, CSS und Javascript, was natürlich einige Vorteile mit sich bringt:
- geringe Ladezeiten der Seiten
- mehr Sicherheit
- Kompatibilität mit so ziemlich jedem Webhoster
- Wartungsaufwand hält sich in Grenzen
- Posts lassen sich in den gängigen Markup-Sprachen schreiben
Dann erzähl' ich mal wie der Umzug abgelaufen ist, wer zudem genauer wissen will wie Nikola bedient wird, kann das im Nikola Handbook nachlesen oder auch im IRC-Channel #nikola auf irc.freenode.net direkt mit den Entwicklern sprechen. Die Beschreibungen sollten unter Mac OSX und Linux funktionieren, wie es mit Windows aussieht, kann ich leider nicht beurteilen.
Installation
Nikola lässt sich relativ einfach via pip installieren, am Besten in ein virtual environment. Dazu wird das Python Package virtualenv benötigt.
pip install virtualenv
Jetzt einfach einen Ordner für das Blog anlegen
mkdir -p website/blog
und ein virtualenv direkt im Projektordner erstellen
cd website/blog
virtualenv --no-site-packages venv
. venv/bin/activate # aktiviert das virtualenv
Nun kann Nikola (und für später, jinja2 und feedparser) installiert werden, ohne dass dessen Abhängigkeiten in der Python-Umgebung des Systems landen.
pip install nikola jinja2 feedparser
Blogger-Import
Damit sind die Voraussetzungen geschaffen, die bereits geschriebenen Zeilen von Blogspot zu importieren. Nikola bietet hierfür einen Blogger- bzw. Wordpress-Import. Zunächst benötigt man Posts und deren Metadaten von Google. Dafür meldet man sich mit seinem Account auf www.blogger.com an, wählt sein Blog aus, geht in dessen Einstellungen und klickt unter Sonstiges auf Blog exportieren.
Anschließend wird das Blog im zuvor erstellten Projektverzeichnis initialisiert, um die exportierten Blogspot-Daten importieren zu können.
nikola init .
nikola import_blogger -o . pfad/zum/blogspot_export.xml
mv conf.py.import_blogger-date conf.py
Die einzelnen Blogposts befinden sich jetzt im Ordner posts als html-Dateien. Leider ist bei meinem Import ein Post verschütt gegangen, also am besten noch mal kontrollieren, ob auch wirklich alles da ist.
Nun geht's an die Konfigurationsdatei conf.py. Für den Anfang reicht es aus, folgende Einträge zu editieren:
Auszug aus meiner conf.py:
# Data about this site
BLOG_AUTHOR = "Name"
BLOG_TITLE = "Keyboard Interrupt"
# This is the main URL for your site. It will be used
# in a prominent link
SITE_URL = "http://keyboard-interrupt.de"
# This is the URL where nikola's output will be deployed.
# If not set, defaults to SITE_URL
BASE_URL = "http://keyboard-interrupt.de/"
BLOG_EMAIL = "email@adresse.tld"
BLOG_DESCRIPTION = "Im Zweifel Control-C"
# What is the default language?
DEFAULT_LANG = "de"
Mit diesen Einstellungen ist es an der Zeit, sich das Blog zum ersten Mal anzusehen. Dafür wird kein eigenständiger Webserver benötigt, denn Nikola stellt selbst einen für die Entwicklung zur Verfügung, der unter http://localhost:8000 erreichbar ist.
nikola build # generiert alle notwendigen Dateien in output/
nikola serve # startet den Webserver
Sieht alles schön aus, könnten die Dateien aus dem output-Ordner einfach auf den Webspace kopiert werden und fertig ist die Laube.
Theme
Vielleicht hat man aber auch noch Lust auf ein anderes Theme. Unter http://themes.getnikola.com finden sich einige Themes, die in Nikola zur Verfügung stehen. Mit den folgenden Befehlen lassen sich die Themes auflisten, bzw. installieren (vorausgesetzt das requests Package ist installiert).
nikola install_theme --list # listet Themes des Repositories
nikola install_theme theme-name # installiert das Theme
Zum Aktivieren trägt man das Theme in die conf.py ein.
# Name of the theme to use.
THEME = "controlc"
Anfangs wollte ich das Theme bootstrap3-jinja verwenden, musste aber leider feststellen, dass der Text der Sites auf mobilen Geräten links und rechts abgeschnitten wird. Somit habe ich das Theme dieser Seite selbst erstellt, bzw. von diesem Bootstrap-Template by Mark Otto abgeschaut und Teile des Nikola-Bootstrap-Themes verwendet. Dazu wirds ggf. einen eigenen Post geben. Infos zum Theming gibt's in diesem Tutorial oder dort: NIKOLA: THE STATIC BLOG ENGINE A.K.A. HOW I BUILD SHISAA.JP
Deployment
Hier fehlt mir leider noch ein geeigneter Workflow. Momentan baue ich das Blog, Lösche den Inhalt aus dem Document Root des Webservers und kopiere die neu erzeugten Dateien via scp aus dem output-Ordner auf den Server. Etwas umständlich wie ich finde, steht aber auf der TODO-Liste.
TODO
Das wären dann die Dinge, die noch zu erledigen sind:
- Überarbeitung einiger HTML-Elemente
- einfacheres Deployment des Blogs (wahrscheinlich via fabfile)
- Einfügen des fehlenden Blogposts
- Veröffentlichung der Dateien auf Github (da bin ich mir noch nicht sicher)
- Ändern der E-Mail-Adresse des Blogs
Soweit so gut. Für Anregungen, Fragen oder sonstige Bemerkungen gibt's mich auf Google+ oder App.net (siehe rechts, bzw. ganz unten, je nach Gerät).