Grav Static Site
Hier mal ein paar Tips und Stolperfallen zum Thema ‘Umwandlung einer Grav Site zu statischem HTML’.
Das Thema hat mich schon in der Vergangenheit beschäftigt, und wird jetzt so langsam wieder aktuell - ich möchte so etwas irgendwann aus meiner aktuellen Site machen, aus folgenden Gründen:
- meine Site soll mich möglichst lange überleben .
- sie soll dann so bleiben wie ich sie zuletzt hinterlassen habe.
- sie soll KEINE Wartung mehr benötigen, das heisst:
- keine CMS Updates,
- keine Server OS bzw. Komponenten Updates (Apache und/oder PHP Versionen…).
- ggf. auch wo anders gehostet werden (z.B. GitHub Pages, Firebase…).
Die beste Lösung dafür ist nun einmal statisches html.
Und zum Glück gibt es genau dafür zwei Grav Plugins:
Inzwischen habe ich beide ausprobiert, es war aber gar nicht so einfach, die jeweils zum Laufen bzw. zur Erzeugung von brauchbaren Ausgaben zu bewegen
.
Das lag zum Einen daran, dass ich zunächst glaubte, man könne die erzeugten index.html Dateien in der Ausgabe-Ordnerstruktur einfach so im Browser aufrufen und es würde direkt funktionieren.
Doch leider nein:
- Es braucht zumindest einen einfachen (lokalen) Webserver - ich verwende dafür den von Pelican - ansonsten hagelt es Javascript Fehler (CORS…).
- Vor dem Export (Generierung) muss die Site auf absolute URLs eingestellt werden (in System->Erweitert).
- bei der Erzeugung der Seiten MUSS die Ausgabe-URL incl. Port angegeben werden, also z.b. http://localhost:8000.
- notwendige PHP-Erweiterungen wie php-xml, php-curl, php-mbstring … müssen in der lokalen Umgebung installiert sein, sofern die Erzeugung aus dieser per CLI gestartet wird.
- alle Ordner, insbesondere in cache/* müssen beschreibbar sein.
- Schlussendlich müssen die erzeugten index.html Dateien in die Webroot der neuen statischen Site kopiert werden.
- Am einfachsten legt man dazu eine Kopie der aktiven Grav Seite an (z.B. durch Auspacken eines Backups) und kopiert da die index.html Dateien hinein, die Markdown Dateien (*.md) können gelöscht werden.
- Danach sollte nach Start des lokalen Webservers mit
pelican -l -o ./web
aus dem übergeordneten Ordner die statische Seite durch Aufruf von http://localhost:8000 sichtbar sein.
Zur Live-Schaltung der statischen Seite (z.B.
https://hoernerfranzracing.de/werner
) muss natürlich bei der Erzeugung der index.html Dateien die Output URL der Live Seite richtig spezifiziert werden !
Soweit hat das jetzt mit dem Blackhole Plugin funktioniert - das andere bietet noch deutlich mehr Optionen, die ich allerdings bisher nicht getestet habe.