Contents
Export Dump
Skript
Mit MoinMoin ist es recht einfach eine statische Version eines Wikis zu erzeugen. MoinMoin kennt hierzu die Option export dump. Die Option exportiert alle (oder ausgewähle) Seiten eines Wikis in statische HTML-Dateien, die in einem Verzeichnis abgelegt werden, das man dann wiederum über den Apache oder einen anderen Web-Server ins Netz stellen kann. Daneben sind nur noch Kleinigkeiten zu erledigen.
Nachfolgend ein Skript-Snipet, das so einen Export durchführt.
# Alte Daten loeschen. su -c "rm -rf $staticpath/*" www-data mkdir -p $staticpath cd $staticpath # Wiki exportieren. echo "WIKI EXPORT: $wikiurl -> $staticpath" python $moin_script --config-dir=$moin_config --wiki-url=$wikiurl export dump --target-dir=$staticpath # Symbolischen Link zum CSS setzen. ln -s $css_path/modernshortline/ $staticpath/modernshortline ln -s $logo $staticpath/logo.png chown -R www-data. $staticpath # Pfade korrigieren. su -c "find $staticpath -type f -name \*.html -exec sed -i 's!/$wikiname/!/$static_wikiname/!g' '{}' \;" www-data
Die Parameter sind hierbei entsprechend der eigenen Umgebung zu belegen.
$moin_config # Pfad zur MoinMoin-Konfiguration $moin_script # Pfad zum MoinMoin-Skript (moin.py) $logo # Pfad um Logo $css_path # Pfad zum Verzeichnis mit den CSS-Dateien des Templates $wikiname # Name des zu exportierenden Wikis. $wikiurl # URL des zu exportierenden Wikis. $static_wikiname # Name des exportierten Wikis. $staticpath # Pfad des exportierten Wikis.
Hier ein vollständiges Skript zum Download. (Die Parameter bitte auf die eigene Umgebung anpassen.)
Dieses Skript läuft auf meinem Server und generiert via Cronjob dieses Wiki. Auszug aus meiner globalen Crontab:
00 3 * * * root test -x /usr/local/bin/moinmoin_static_export.sh && /usr/local/bin/moinmoin_static_export.sh
Beschränkungen
Das CSS, welches MoinMoin für den Export verwendet, ist modernshortline.
Bei der Nutzung von Navitree erscheint auf den exportierten Seiten zwar der korrekte Pfad, aber die Links der Brotkrumennavigation werden nicht mit exportiert.
- In den exportierten Seiten stehen die Pfade des aktiven Wikis und nicht die Pfade des exportierten statischen Wikis. Ich habe noch nicht herausgefunden woran das liegt. Laut Dokumentation sollte das nicht so sein. Allerdings lässt sich das mit einem find/sed-Befehl, der die falschen Pfade sucht und ersetzt, relativ leicht reparieren. Im obigen Skript ist dieser Befehl bereits eingebaut. Siehe:
find $staticpath -type f -name \*.html -exec sed -i 's!/$wikiname/!/$static_wikiname/!g' '{}' \;
Bemerkung
Soweit möglich arbeitet das Skript mit den Rechten des Benutzers www-data. Das erhöht einfach ein wenig die Robustness. So ein rekursiver rm-Befehl mit konfigurierbarem Parameter kann ansonsten auch mal sehr schnell und sehr heftig nach hinten los gehen ... . Sollte es auf Deinem System diesen Benutzer nicht geben, musst Du das Skript entsprechend anpassen. Habe das jetzt nicht parametrisiert. Ich denke, es ist selbsterklärend.