Ich habe Anfang des Jahres mein altes Wiki (wikiarchiv.natenom.de), das mit DokuWiki betrieben wurde, in eine statische Website umgewandelt und somit archiviert. Die meisten Bereiche habe ich in mein neues Wiki (wiki.natenom.de) migriert.
Jedoch waren der Einfachheit halber bis heute auch die migrierten Bereiche weiterhin im alten Wiki auf Dateiebene hinterlegt, aber wegen der Weiterleitungen nicht abrufbar.
Die Weiterleitungen führten für migrierte Inhalte via HTTP Status Code 301 zum neuen Wiki.
Heute war es endlich an der Zeit, die alten Inhalte aus dem archivierten, alten Wiki restlos zu löschen.
Damit ich auch in Zukunft noch nachlesen kann, wie ich das gemacht hatte oder falls jemand das selbst für ein eigenes Wiki machen möchte, habe ich hier die Anleitung dazu bereit gestellt.
Überlegungen zum Entfernen der migrierten Bereiche aus dem archivierten Wiki
Ein paar Gedanken dazu, ob es sinnvoll ist, die migrierten Bereiche zu entfernen:
- Im Seitenindex im Wiki und in der Sitemap fehlen die migrierten URLs. Diese wurden aber sowieso schon seit Monaten mit 301 weitergeleitet aufs neue Wiki und bleiben weiterhin via nginx-Konfiguration im Webserver, sodass auch alte Verlinkungen auf migrierte Inhalte weiterhin richtig zum neuen Wiki auflösen.
- Man kann jetzt nur nicht mehr im alten Wiki stöbern sondern muss dazu ins neue Wiki.
- Für Suchmaschinen ist es vermutlich besser, weil die meisten migrierten Inhalte nicht mehr nur aus Weiterleitungen bestehen. Zudem gucken Suchmaschinen dank 301 sowieso seit Langem nur noch im neuen Wiki.
Wenn jemand hierzu Gedanken hat, bitte anschreiben. 😊
Was wird in dieser Anleitung gemacht?
Auf dem lokalen Rechner wird:
- der Webserver Nginx installiert.
- eine temporäre lokale Domain eingerichtet und verwendet.
- das Wiki konfiguriert.
- das Wiki via wget heruntergeladen und das Ergebnis modifiziert.
Schließlich wird das Ergebnis auf den öffentlichen Webserver (wiki.natenom.de) hochgeladen und bleibt dort auf ewig liegen und wird nie wieder angetastet.
Vorbereitungen
Als Basis habe ich meine damalige Dokumentation verwendet, die beschreibt, wie man ein DokuWiki in eine statische Website umwandelt, siehe hier.
Installation der benötigen Debian-Pakete
apt install nginx php8.1 php-fpm php8.1-xml
Lokale Domain fürs Wiki
Man kann zwar auch die richtige Domain verwenden und diese auf den lokal Rechner verweisen lassen aber das birgt Probleme, falls man z. B. HSTS verwendet. Dann wird man jedes Mal auf https weitergeleitet, was hier in dieser Anleitung aber nicht eingerichtet wird.
Die lokale Domain habe ich einfach mal auf wiki.natenom.me festgelegt und verwende sie hier in allen Shell-Kommandos entsprechend.
In die Datei /etc/hosts
trägt man dazu ein:
127.0.0.1 wiki.natenom.me
Lokalen Webserver konfigurieren
Hier die Konfiguration für den lokalen Nginx-Server:
Datei /etc/nginx/sites-enabled/default
|
|
Altes Backup des Wikis ins lokale Webserver-Verzeichnis kopieren
Ich habe natürlich noch ein Backup des gesamten htdocs-Verzeichnisses meines alten Wikis. Dieses habe ich nach /home/wiki.natenom.me/htdocs/
kopiert und anschließend dem Benutzer www-data
und der zugehörigen Gruppe zugänglich gemacht.
chown -R www-data: /home/wiki.natenom.de/htdocs/
Das Wiki sollte jetzt per Browser benutzbar sein via http://wiki.natenom.me/
.
Lokales Wiki konfigurieren
TopBar
Um deutlich zu zeigen, dass dieses Wiki archiviert wurde, habe ich die TopBar-Funktion von DokuWiki genutzt, sodass oben am Rand auf jeder Seite dieser Text angezeigt wird:
Der Quelltext der Seite /topbar
ist:
//Dieses Wiki wurde archiviert und wird nicht mehr gepflegt. Mein neues Wiki gibt es auf [[natwikic>|wiki.natenom.com]]. Details auf der [[:|Startseite]].//
Feeds
Ich habe dieses Mal die Feeds des Wikis deaktiviert.
Indexmenu
Das Indexmenü habe ich dieses Mal so eingestellt, dass weiterhin JavaScript genutzt wird. Der Quelltext von /wiki/sidebar
dazu ist:
**Navigation**
{{indexmenu>..#2|js#indextheme useheading navbar tsort noscroll nsort notoc nomenu }}
\\
----
* [[:datenschutz|Datenschutz]]
* [[nblog>impressum/|Impressum]]
* [[:lizenz|Lizenz]]
* [[:ueber|Über]]
Parameter erklärt:
- Die
#2
bewirkt, dass alle Seiten bis zur zweiten Ebene immer geöffnet sind. So sieht man auch mit deaktiviertem JavaScript noch die großen beiden Bereiche Minecraft und Mumble des Wikis in der Navigation. nomenu
deaktiviert das Rechtsklick-Menü im Indexmenüs.
Da die Grafiken für das Indexmenü später nicht mit wget heruntergeladen werden, muss man sie manuell in /lib/plugins/indexmenu/images/
des heruntergeladenen Wikis platzieren. Die passenden Bilder gibt es in /lib/plugins/indexmenu/images/
des Webservers. Da ich das Default-Theme verwende, werden nur die im Hauptverzeichnis benötigt und dazu das Verzeichnis indextheme/
.
Verzeichnisauflistung der benötigten Dateien:
.
├── close.gif
├── empty.gif
├── indexmenu_toolbar.png
├── indextheme
│ ├── base.gif
│ ├── empty.gif
│ ├── folder.gif
│ ├── folderh.gif
│ ├── folderhopen.gif
│ ├── folderopen.gif
│ ├── info.txt
│ ├── joinbottom.gif
│ ├── join.gif
│ ├── line.gif
│ ├── minusbottom.gif
│ ├── minus.gif
│ ├── page.gif
│ ├── plusbottom.gif
│ └── plus.gif
├── larrow.gif
├── msort.gif
├── rarrow.gif
└── toc_bullet.gif
add_header X-Content-Type-Options nosniff
.Bereiche entfernen
Jetzt werden die bereits migrierten Themenbereiche bzw. Namensräume aus dem Wiki entfernt.
In meinem Fall ist das alles innerhalb von /data/
, das nicht zu Mumble, Minecraft oder dem Wiki selbst gehört.
Dazu löscht man die Namensräume (Verzeichnisse) und Dateien in diesen Bereichen:
/data/cache/
/data/media/
/data/media_attic/
/data/media_meta/
/data/meta/
/data/pages/
Danach könnte man sich im Wiki anmelden und den Suchindex neu erstellen lassen, falls man die Suche noch testweise verwenden möchte. Für die archivierte Seite ist der Suchindex jedoch irrelevant, da die Suche PHP benötigt und abgeschaltet sein wird.
Mumble
, Minecraft
, Wiki
und Über
) zugreifen und Änderungen vornehmen zu können, habe ich das wie folgt gelöst: Es gibt zwei Varianten des Verzeichnisses /data/
. Das passende binde ich dann auf dem lokalen Webserver per Symlink ein.Optional History entfernen
Da mit dieser Anleitung hier immer nur der aktuelle Status einer Seite heruntergeladen wird und die History deaktiviert ist, kann man diese komplett aus dem Wiki entfernen. Oder es einfach sein lassen, weil es darauf keinen Zugriff geben wird.
Ich will es trotzdem hier erwähnt lassen, weil man so Daten löschen kann, die sowieso keinen Zweck mehr haben auf einer statischen Website.
Dazu das Verzeichnis /data/attic/
leeren, aber nicht löschen. Genauso kann man mit /data/media_attic/
, mit /data/media_meta/
und mit /data/meta/
verfahren.
Wiki vom lokalen Webserver herunterladen
Nun wird das Wiki vom lokalen Webserver heruntergeladen, die Startseite verfügbar gemacht, die sonst fehlt und die Sitemap heruntergeladen.
Vorsicht beim Ausführen von Shellkommandos via Copy & Paste
Man sollte Shellkommandos aus Anleitungen, die in einem Browser angezeigt werden, grundsätzlich nicht einfach ungeprüft in die Shell einfügen und ausführen.
Denn es ist möglich, Teile des Codes z. B. via CSS zu verstecken. Diese Teile werden aber trotzdem kopiert und landen auch in der Shell, wo sie ausgeführt werden.
Besser ist es, die Kommandos erst in einen lokalen Texteditor einzufügen und dort zu prüfen, bevor man die ausführt.
Kopiere doch mal dieses Beispiel und füge es – in die Shell (!NEIN) – in einen Editor ein:
echo "Befehl 1";
echo "Befehl 3"
mkdir wiki_download
cd wiki_download
wget --recursive --no-clobber --page-requisites --html-extension --convert-links --restrict-file-names=unix --no-parent --reject-regex 'do=' -erobots=off --domains wiki.natenom.me http://wiki.natenom.me
cd wiki.natenom.me
cp index.html start.html
wget http://wiki.natenom.me/sitemap.xml.gz
Nachbearbeitung
Lokal verwendete Domain durch die spätere, richtige Domain ersetzen
Jetzt ersetzt man die massenhaft im heruntergeladenen Wiki hinterlegte lokal Domain durch die spätere, richtige Domain, die online verwendet wird.
Zuerst rekursiv in allen Dateien via sed
und dann explizit in der sitemap.xml.gz
und auch noch in lib/exe/manifest.php
, wo aus irgendwelchen Gründen nur localhost
steht.
cd wiki_download
shopt -s globstar ; for file in **/*; do test -f "${file}" && sed -i -e 's#http://wiki.natenom.me/#https://wiki.natenom.de/#g' "${file}"; done
gunzip sitemap.xml.gz
sed -i -e 's#http://localhost/./#https://wiki.natenom.de/#g' sitemap.xml
gzip sitemap.xml
sed -i -e 's#http:\\/\\/wiki.natenom.me\\/#https:\\/\\/wiki.natenom.de\\/#g' lib/exe/manifest.php
Eine 404-Seite
Zusätzlich habe ich noch eine 404-Seite hinzugefügt, die erwähnt, dass das Wiki archiviert wurde. Diese legt man im Hauptverzeichnis des heruntergeladenen Wikis als Datei 404.html
ab und verweist in der Nginx-Konfiguration auf diese via error_page 404 /404.html;
.
<html>
<body><h1>404 - File not found</h1>
<p>Das Wiki auf wiki.natenom.de wurde archiviert und in eine <a href="https://natenom.de/2022/03/dokuwiki-in-statische-website-umwandeln/">statische Website umgewandelt</a>.</p>
<p>Daher gibt es an vielen Stellen, für die PHP notwendig wäre, eine 404 (File not found) Fehlermeldung.</p>
<p>Du kannst eine externe Suchmaschine benutzen, um Inhalte zu finden.</p>
</body>
</html>
Packen und hochladen
Das lokal heruntergeladene Wiki kann jetzt gepackt und hochgeladen werden.
cd wiki_download
zip -r wiki.natenom.me.zip wiki.natenom.me/
Dann lädt man es, wie auch immer, auf den Webserver hoch und entpackt es in das entsprechende htdocs-Verzeichnis, setzt die Berechtigungen passend und startet den Webserver neu.
Ergebnis
So sah die Startseite des archivierten Wikis bisher aus:
Und so sieht sie jetzt aus:
Und so sieht es ohne JavaScript aus:
Und so, falls der Browser so eingestellt ist, dass das Dark-Theme bevorzugt wird:
Anmerkungen für mich
- Im Gegensatz zu früher heißt
/.cdn/
jetzt/_cdn/
und wurde entsprechend in den Konfigurationen angepasst.
Kommentare
Bisher gibt es hier keine Kommentare.
Kommentar oder Anmerkung für diesen Blogbeitrag
Öffentlicher Kommentar per E-Mail: Hier klicken
Nicht öffentliche Anmerkung per E-Mail: Hier klicken
Sonstige Kontaktaufnahme: Kontakt