This is an old revision of the document!
Table of Contents
Pelican
Pelican ist ein in Python geschriebener Static Site Generator, mit dem man auf Basis von Markdown einen Blog mit statischen HTML-Seiten erstellen kann.
Vorbereitung
Für die Installation müssen erst, sofern nicht vorhanden, die benötigten Pakete installiert werden:
$ sudo pacman -S python python-pip python-virtualenv
Der Einfachheit halber lege ich einen separaten User pelican an, über den das Blog (später automatisch) verwaltet wird. Dabei http entsprechend an die Gruppe anpassen, der der Webserver angehört
$ sudo useradd -m -g http -s /bin/bash pelican
Dem User ein Passwort zuweisen
$ sudo passwd pelican
Der Gruppe (somit auch dem Webserver) Zugriff auf das User-Verzeichnis einräumen
$ sudo chmod 750 /home/pelican
nginx
nginx für Pelican vorbereiten
- /etc/nginx/ngnix.conf
server { listen 443 ssl; server_name blog.domain.tld; root /home/pelican/blog/output; index index.html; error_log /var/log/nginx/pelican-error.log warn; ssl_certificate /etc/nginx/ssl/domain.tld.pem; ssl_certificate_key /etc/ssl/private/domain.tld.key; location ~ ^/feeds { autoindex on; } }
Einrichtung
Haben wir alle Vorbereitungen getroffen, geht es an die eigentliche Einrichtung. Dazu zum pelican-Nutzer wechseln
$ su pelican
Nun in das Home-Verzeichnis wechseln, um dort die Einrichtung vorzunehmen
$ cd /home/pelican
Jetzt müssen die Ordner für die eigentlichen Daten erstellt werden. Für die virtuelle Umgebung verwende ich blogenv, die Daten für den Blog-Inhalt selbst landen im Ordner blog
$ mkdir blog blogenv
Ein virtual environment für Python anlegen, worin Pelican und Abhängigkeiten installiert werden
$ virtualenv blogenv
Dieses virtual environment aktivieren und Pakete installieren
$ source blogenv/bin/activate $ pip install pelican Markdown typogrify
Als nächstes muss die Blog-Umgebung eingerichtet werden. Dabei die Fragen so gut es geht beantworten. Sie können später noch über die erstellte Konfigurationsdatei pelicanconf.py im blog-Ordner verändert werden.
$ pelican-quickstart -p blog
Wechseln in den blog-Ordner
$ cd blog
Typogrify zur pelicanconf.py hinzufügen:
TYPOGRIFY = True
Markdown Einträge im Ordner content erstellen, zum Erzeugen der fertigen Website-Struktur im blog-Ordner
$ make publish
aufrufen.
Da pelican generell nur für den Blog verwendet wird, das virtualenv zur .bashrc hinzufügen:
source ~/blogenv/bin/activate
So befindet man sich nach dem Einloggen als pelican direkt in der virtuellen Python-Umgebung.
Modifizierungen & Erweiterungen
Plugins hinzufügen, dazu das entsprechende GitHub Repository clonen
$ git clone https://github.com/getpelican/pelican-plugins.git plugins
Die jeweiligen Plugins in der pelicanconf.py eintragen, hier beispielhaft an drei Plugins dargestellt
PLUGIN_PATHS = ['plugins'] PLUGINS = ['feed_summary', 'gzip_cache', 'render_math']
Themes können genauso in z. B. den Ordner themes geklont werden, aktiviert wird es wieder in der pelicanconf.py
THEME = 'themes/cloned-repo-name'
Zusätzliche Seiten wie Archiv, die Link-Struktur und mehr können ebenfalls über die pelicanconf.py eingestellt werden:
- ~/blog/pelicanconf.py
# Formatting for dates DEFAULT_DATE_FORMAT = ('%a %d %B %Y') # Formatting for urls ARTICLE_URL = "{date:%Y}/{date:%m}/{slug}/" ARTICLE_SAVE_AS = "{date:%Y}/{date:%m}/{slug}/index.html" CATEGORY_URL = "category/{slug}" CATEGORY_SAVE_AS = "category/{slug}/index.html" TAG_URL = "tag/{slug}/" TAG_SAVE_AS = "tag/{slug}/index.html" # Generate yearly archive YEAR_ARCHIVE_SAVE_AS = '{date:%Y}/index.html' MONTH_ARCHIVE_SAVE_AS = '{date:%Y}/{date:%b}/index.html'
Automatisierung mittels git
