gtan-Blog

ICH! + mein Seitenaufbau

Hier mal eine grobe Beschreibung des Aufbaus meines Stacks für die Seite. Die einzelnen Komponenten will ich unten etwas detailliereter skizieren. Für einzelne Komponenten wird es auch noch einen eigenständigen Beitrag geben. Ganz unten im Stack steht der Server und das OS, in meinem Fall netcup Server mit Debian OS. Auf diesen kommt ein Webserver, der letztlich ein Apache mit WSGI ist. Ganz oben kommt dann die Anwendung Django und die Datenbank selbst.

Server + OS

Wie schon oben erwähnt hoste ich meinen Server zurzeit bei netcup. Ich habe vor einigen Jahren günstig ein Angebot bekommen. Letztlich hat der Server 2 CPUs (Intel(R) Xeon(R) Gold 6140 CPU @ 2.30GHz) und 128GB SSD-Speicher. Ein Erfahrungsbericht mit netcup folgt, eins lässt sich vorweg verraten, ich bin sehr zufrieden. Mit 20 GB RAM ist der Server zwar als reines Hosting etwas überdimensioniert, da ich den aber auch noch für andere Zwecke nutze relativiert sich das Ganze.

OS-seitig bin ich kürzlich umgestiegen von Debian 9 (Stretch) auf Debian 10 (Buster). Debian ist recht gängig im Einsatz für ein Serverbetriebssystem. Dies liegt vorallem daran, dass die Pakete doch recht stabil sind, da diese nicht direkt nach Release eingebunden werden. Andererseits dauert es auch ziemlich lange, bis man bei der aktuellsten Version von bestimmter Software angelangt ist.

Webserver

Zum Hosten der Umgebung nutze ich letztlich ein Apache. Dies verfügt über das Modul wsgi, womit sich Python Webframeworks, wie etwa Django hosten lassen. Apache lässt sich vielseitig nutzen, um Seiten nach außen hin zu veröffentlichen. Apache ist zwar nicht ganz so leistungsstark wie etwa nginx, aber ist dafür recht einfach in der Handhabung und reicht für so kleinere Zwecke vollkommen aus.

Anwendung

Mein Anwendungsstack besteht aus Django als Webframework, DjangoCMS als CMS, DjangoCMS-Blog für die Blogverwaltung, MariaDB als Datenbank und weitere Django und DjangoCMS Applikationen für kleinere Features. Diese kann ich auch mal in separaten Blogeinträgen aufgreifen.

Django ist ein Python-Webframework auf OpenSource-Basis. Letztlich basiert es auf einem Model-Template-View Schema. Die eingehende Anfrage wird live bearbeitet und eine darauf passende Antwort zurückgegeben. Die Formatierungen und das Design kommen über das Template. Dabei unterstützt Django alle gängigen Datenbanken und fährt mit dem Prinzip, dass alles explizit deklariert werden muss, einen guten Weg Sicherheit hochzuhalten und nur das gewünschte bereitzustellen.

DjangoCMS ist ein recht minimalistisches Content Management System, dass eben auf dem Django-Ökosystem aufsetzt. DjangoCMS und Plone sind da die bekanntesten Python CMS überhaupt. Im Gegensatz zu etablierten PHP-CMS wie Wordpress oder Drupal ist es eben auch sehr minimalistisch gehalten. Es bietet nur das an, was wirklich benötigt wird mittels hinzugefügter Applikationen. Ich nutze etwa mit CKEditor ein bekanntes WYSIWYG-Tool, Filer für die Verwaltung von Seiteninhalten oder auch das automatische Skalieren und Zuschneiden der Bilder und Bootstrap für die Gestaltung der Seite.

DjangoCMS-Blog setzt eben widerum auf DjangoCMS auf und erweitert dies mit einem Blog inklusiver Feed etc. Diese lassen sich dann ebenfalls einfach über das CMS verwalten. Man kann verschiedene Blogs erstellen, in den Blogs Kategorien anlegen sowie ein Tagging dieser bereitstellt.