User Tools

Site Tools


server:pelican

This is an old revision of the document!


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, 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:

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

FIXME

server/pelican.1448835800.txt.gz · Last modified: by sascha