summaryrefslogtreecommitdiff
path: root/Infrastruktur/Software/sfblog.mdwn
blob: a1affec96100e0e54a626e86a3aad47aa44f24cf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[[!meta title="Hauptwebsite und Blog"]]

* Quellcode: <https://github.com/starshipfactory/sfblog>
* URL: <https://www.starship-factory.ch/>, <https://www.starship-factory.ch/admin>

## Requirements

* Darstellung von statischem Content für die Infoseiten (Anfahrt, Datenschutzerklärung etc)
* 2 navigierbare Menüs (top und bottom)
* Blogfunktion neben den statischen Seiten
* Einfache Editierbarkeit von Einträgen per WYSIWYG-Editor
* SPAM-Schutz für Blogkommentare

## Technische Details

Das Blog ist als Django-Dienst implementiert und läuft unter gunicorn mit einer eigenen nginx-Instanz. Statische Daten (hochgeladenen Bilder, etc) werden im lokalen Dateisystem gespeichert, der Rest (Texte, Metadaten, Kommentare, etc) in einer PostgreSQL-Datenbank.

Die Struktur der Seite ist durch [jinja2-Templates](https://jinja.palletsprojects.com/en/2.11.x/) gesteuert. Diese Templates können recht umfassend angepasst werden. Manche Inhalte werden nur auf bestimmten Seiten angezeigt.

Der SPAM-Schutz benutzt akismet.

## Bekannte Probleme

* Die Webseite ist inhärent auf einen einzelnen Server limitiert und kann nicht einfach repliziert betrieben werden. Die maximale Kapazität der Webseite ist somit die Kapazität eines einzelnen Servers.
* Django ist nicht besonders effizient und benötigt ca. 1 Core für 0.25 Anfragen pro Sekunde.
* Ein Scraper sendet mehrere Male am Tag genug Anfragen, um die CPU des Servers, auf welchem das Blog läuft, komplett auszulasten. Das führt zu hoher Latenz und Fehlern beim Laden der Seite.
* Der SPAM-Schutz ist nicht so effizient wie er sein sollte.