SELFHTML/Offline-Wiki

Aus SELFHTML-Wiki
Wechseln zu: Navigation, Suche
Selfhtml-wiki-q-offline.svg
Ziel des Projektes ist, eine offline verwendbare Version des Wikis bereitzustellen.

Enthalten ist der Inhalt des Wikis abzüglich des Benutzer-Namensraumes in der zum Veröffentlichungszeitpunkt aktuellen Version.


Lizenz-Fragen

Das SELFHTML-Wiki unterliegt der Lizenz CC-BY-SA 3.0. Darin ist unter anderem Namensnennung enthalten.

In der Offline-Variante ist allerdings nicht der gesamte Datenbestand, insbesondere nicht die Daten der Nutzer, enthalten. Es wird von den Wiki-Seiten und anderen Inhalten nur die zum Zeitpunkt der Erstellung aktuelle Revision übernommen, ohne Versionsgeschichte. Damit entfallen die Namen der Bearbeiter und somit ist diese Version nicht mehr CC-BY-SA-3.0-konform.

Beachten Sie: Eine Veröffentlichung außerhalb privater Räume oder geschützter Lernumgebungen, sprich öffentliche Zugänglichmachung im Internet, ist nicht erlaubt, da dies nicht von der Lizenz abgedeckt wäre.

Downloads

oder

Nutzung unter Windows

Es wird die Installation eines eigenständig laufenden Systems beschrieben. Dazu wird unter anderem der Webserver Nginx installiert. Soll stattdessen der IIS verwendet werden, was für einen dauerhaft ausgelegten Betrieb besser wäre, so ist sinngemäß wie im Absatz zu Linux/Unix beschrieben zu verfahren. Die Identity für den Application Pool benötigt Schreibberechtigung für das Cache-Verzeichnis …\mediawiki\cache. Wenn die Standard-Einstellung ApplicationPoolIdentity für den Pool namens DefaultAppPool verwendet wird, dann ist das der Nutzer "IIS AppPool\DefaultAppPool".

Installation der Komplett-Paket-Version

  • Laden Sie das Komplett-Paket https://wiki.selfhtml.org/offline-wiki/selfhtml-wiki-komplett.zip herunter
  • Der Pfad, in dem das Offline-Wiki installiert werden soll, darf keine Leerzeichen enthalten.
  • Entpacken Sie die heruntergeladene Datei selfhtml-wiki-komplett.zip, z. B. Rechtsklick und alle extrahieren.
  • Starten Sie das Programm setup.cmd.
    • Gegebenenfalls müssen Sie das Ausführen einer App aus unbekannter Quelle erlauben.
      Defender-setup-cmd.png
  • Dieses Programm führt durch den Installationsprozess und löscht anschließend die für den Betrieb nicht benötigten Dateien sowie sich selbst. Die heruntergeladene Datei selfhtml-wiki-komplett.zip kann ebenfalls gelöscht werden.
  • Die Installation erfolgt in das Verzeichnis, aus dem die setup.cmd aufgerufen wurde. Sie können dieses Verzeichnis problemlos umbenennen oder verschieben, solange keine Leerzeichen im Pfad enthalten sind.
  • Lesen Sie weiter im Abschnitt Das Offline-Wiki verwenden.

Installation „zu Fuß“

  1. Anlegen eines Verzeichnisses für das Offline-Wiki, z. B. D:\SELFHTML-Offline-Wiki. Der Pfad darf keine Leerzeichen enthalten.
    • Es spielt sich alles in diesem Verzeichnis und dessen Unterverzeichnissen ab. (Ausnahme siehe unten, Voraussetzung für PHP)
  2. Download von Nginx in oben genanntes/angelegtes Verzeichnis
    • getestet mit Version 1.12.1
    • https://nginx.org/en/download.html -> Stable version -> nginx/Windows-versionsnummer
    • Auspacken in das aktuelle Verzeichnis (Extract here), ein Unterverzeichnis nginx-versionsnummer wird dabei angelegt
    • Verzeichnis nginx-versionsnummer umbenennen in nginx (d. h. Versionsnummer entfernen)
    • Die Download-Datei nginx-versionsnummer.zip kann gelöscht werden.
  3. Download von PHP für Windows in oben genanntes/angelegtes Verzeichnis
    • getestet mit Version 7.0.32, neuere Versionen des 7.0-Zweiges sollten problemlos gehen, 7.1 ist jedoch nicht für die verwendete MediaWiki-Version unterstützt
    • https://windows.php.net/download/
    • PHP 7.0.x (nicht die 7.1) in Variante "VCxx x64 Non Thread Safe" -> Zip
    • Auspacken in Unterverzeichnis (Extract to ...), das PHP-Zip-Archiv legt im Gegensatz zu Nginx kein separates Unterverzeichnis an.
    • Verzeichnis php-versionsnummer umbenennen in php
    • Die Download-Datei php-versionsnummer.zip kann gelöscht werden.
  4. Voraussetzung für PHP
    • PHP benötigt das "Visual C++ Redistributable for Visual Studio 20..", das separat installiert werden muss.
    • Das ist auf https://windows.php.net/download/ im Kasten auf der linken Seite verlinkt.
    • Die VCxx-Version muss mit der vom PHP-Paket übereinstimmen.
  5. Download angepasste Mediawiki-Installation in oben genanntes/angelegtes Verzeichnis
  6. Download der Daten-Datei
    • https://wiki.selfhtml.org/offline-wiki/selfhtml-offline.zip
    • Auspacken in das aktuelle Verzeichnis (Extract here), ein Unterverzeichnis install wird dabei angelegt
    • Ausführen der install.cmd im install-Verzeichnis, das kopiert einige Dateien an die richtige Stelle.
    • Die Download-Datei selfhtml-offline.zip kann gelöscht werden.
    • Auch das Verzeichnis install wird nicht mehr benötigt und sollte samt Inhalt gelöscht werden.

Die Verzeichnisstruktur sollte nun so aussehen:

D:\SELFHTML-Offline-Wiki\
    logs\
    mediawiki\ mit Unterverzeichnissen
    nginx\ mit Unterverzeichnissen
    php\ mit Unterverzeichnissen
    temp\
    nginx.conf
    php.ini
    start.cmd 
    offline-wiki-readme-installation.txt

Das Offline-Wiki verwenden

Im Offline-Wiki-Verzeichnis gibt es nun eine Datei start.cmd. Diese startet den Webserver und PHP. Sie bleibt die ganze Zeit offen, solange der Server laufen soll. Abbrechen, wie angezeigt mit Strg + C. Das beendet das PHP. Die Batch-Datei sollte danach noch bis zum Ende durchlaufen, um auch den Webserver zu beenden, also mit N antworten.

Im Browser kann nun http://localhost:8000 aufgerufen werden.

Soll ein anderer Port verwendet werden, kann das in der nginx.conf eingestellt werden. Dazu ist die Zeile "listen 8000;" zu ändern. Die relevante Datei befindet sich im Offline-Wiki-Verzeichnis. Die Datei im nginx/conf-Unterverzeichnis wird nicht verwendet. Außerdem wird noch der Port 9000 für PHP benötigt. Der muss bei Bedarf an zwei Stellen umgeschrieben werden, in der start.cmd und in der nginx.conf.

Wenn Sie das Offline-Wiki verwenden wollen, müssen Sie die Kommunikation des Webservers nginx.exe in privaten Netzwerken zulassen.

Defender-offline-wiki.png

Deinstallation

Ob Komplett-Paket oder Zu-Fuß-Version, ein einfaches Löschen des Offline-Wiki-Verzeichnises genügt. Dieser Vorgang wird jedoch misslingen, wenn der Webserver nicht richtig beendet wurde. Im Zweifelsfall kann vor dem Löschen noch einmal die start.cmd ausgeführt werden. Nach dem Abbrechen mit Strg + C muss mit N geantwortet werden. Falls die start.cmd bereits gelöscht ist, müssen die Prozesse des nginx über den Task Manager von Windows beendet werden. Diese sieht man aber nur in der Komplettansicht "Mehr Details". Ein Neustart des Systems hilft aber auch.

Außerdem wurde noch "Visual C++ Redistributable for Visual Studio 20..." installiert. Es ist empfehlenswert, diese Installation im System zu belassen, da sie eventuell noch von anderen Programmen verwendet wird. Ansonsten kann die Deinstallation über die Programmverwaltung der Systemsteuerung (Windows 10: Apps & Features) erfolgen.

Neue Version installieren

Die installierte Version kann im Verzeichnis des Offline-Wikis anhand der Dateien version-wiki-*.txt und version-data-*.txt ermittelt werden.

Um eine neue Komplett-Paket-Version zu installieren, kann das Installationsverzeichnis der alten Version gelöscht oder umbenannt werden oder die Installation in ein neues Verzeichnis erfolgen. Eine Installation in ein bestehendes Verzeichnis hinein ist nicht getestet und nicht empfehlenswert. Ansonsten ist wie im Abschnitt Komplett-Paket-Version bzw. Installation „zu Fuß“ beschrieben zu verfahren.

Nginx und PHP können unabhängig von einer Bereitstellung eines neuen Komplett-Pakets aktualisiert werden.

  • Um eine neue Nginx-Version zu installieren, kann das Verzeichnis nginx gelöscht werden. Die Installation der neuen Version erfolgt wie im Nginx-Abschnitt der „zu Fuß“-Version beschrieben.
  • Um eine neue PHP-7.0.xx-Version zu installieren, kann das Verzeichnis php gelöscht werden. Die Installation der neuen Version erfolgt wie im PHP-Abschnitt der „zu Fuß“-Version beschrieben.

Wenn eine neue Wiki-Version oder ein neuer Datenbestand nicht als Komplett-Paket installiert werden soll, kann wie folgt verfahren werden.

  • Für eine neue Wiki-Version ist das Verzeichnis mediawiki zu entfernen.
  • Anschließend sind die Punkte Mediawiki-Installation und Daten-Dateien aus dem Abschnitt Installation „zu Fuß“ auszuführen.
  • Für eine neue Daten-Version ist nur der Punkt Daten-Dateien aus dem Abschnitt Installation „zu Fuß“ auszuführen.

Installation unter Linux/Unix

  1. Zunächst ist ein Webserver (zum Beispiel Apache oder Nginx) und PHP in der Version 7.0 zu installieren. Version 7.1 ist von Mediawiki nicht unterstützt. Aber auch Versionen ab 5.5.9 aufwärts sind verwendbar.
    Die Installation richtet sich nach der jeweiligen Variante von Linux und ist wegen der Vielfalt nicht Gegenstand dieser Dokumentation. Bitte dazu eine geeignete Anleitung im Internet suchen. Beispielsweise hat https://www.howtoforge.com/ ausführliche Anleitungen für viele Systeme. Bitte auch https://www.mediawiki.org/wiki/Manual:Installation_requirements#PHP konsultieren, vor allem die Verfügbarkeit der mbstring-Extension ist gegebenenfalls überprüfen, sowie SQLite 3, alle anderen Extensions sollten im Lieferumfang enthalten sein.
    Vorgesehen ist, dass für das Offline-Wiki ein eigener VHost zur Verfügung steht, oder der Webserver nur für das Offline-Wiki verwendet wird. Der Webserver/VHost sollte so konfiguriert sein, dass index.php als DirectoryIndex verwendet wird.
    Der Stand sollte nun sein, dass der Webserver und PHP läuft, und eine Testdatei index.php mit Inhalt <?php phpinfo();?> im Browser aufgerufen eine Menge PHP-Informationen zeigt.
  2. Download angepasste Mediawiki-Installation
    • https://wiki.selfhtml.org/offline-wiki/mediawiki-selfhtml.zip
    • Download in ein beliebiges Arbeitsverzeichnis
    • Das zip-Archiv packt sich in ein Unterverzeichnis namens mediawiki aus.
    • Der Inhalt des Verzeichnisses mediawiki ohne das Verzeichnis selbst muss ins DocumentRoot des Webservers kopiert/verschoben werden.
    • Die eventuell zum Testen angelegte index.php muss überschrieben oder vorher gelöscht werden.
    • DocumentRoot ist das Verzeichnis, in dem die oben genannte testweise angelegte index.php liegen muss, um erfolgreich ausgeführt zu werden.
  3. Download der Daten-Datei
    • https://wiki.selfhtml.org/offline-wiki/selfhtml-offline.zip
    • Download in ein beliebiges Arbeitsverzeichnis
    • Das zip-Archiv packt sich in ein Unterverzeichnis namens install aus.
    • Der Inhalt im Verzeichnis install/images muss ins Verzeichnis images im DocumentRoot kopiert/verschoben werden.
    • Der Inhalt im Verzeichnis install/local muss ins Verzeichnis local im DocumentRoot kopiert/verschoben werden.
    • Der Inhalt im Verzeichnis install/data muss ins Verzeichnis data im DocumentRoot kopiert/verschoben werden.
    • Die anderen Dateien sind für die Linux-Variante nicht relevant.
  4. Berechtigung setzen
    • Der User, unter dem das PHP läuft, braucht Schreibrechte für das Verzeichnis …/mediawiki/cache.

User admin und sein Passwort

In der Wiki-Datenbank gibt es einen einzelnen Benutzer namens admin mit dem Password Password-1. Man kann sich damit anmelden, aber nichts weiter tun, weil das Wiki auf Nur-Lesen konfiguriert ist.

  • Windows: Am Ende der LocalSettings.php im Unterverzeichnis mediawiki gibt es eine Zeile beginnend mit $wgReadOnly.
  • Linux: Am Ende der LocalSettings.php im DocumentRoot-Verzeichnis gibt es eine Zeile beginnend mit $wgReadOnly.

Diese kann mit einem // oder # am Anfang unwirksam gemacht werden, um das Passwort ändern zu können, aber auch um Bearbeitungen zuzulassen. Das ist aber nicht Sinn und Zweck des Offline-Wikis.

Warum so und keine statischen Seiten?

Die Ausführungen zu dieser Offline-Version begannen damit, den gerenderten Hauptinhalt der jeweiligen Seiten im Wiki von der Mediawiki-Software erstellen zu lassen und jeweils in einen statischen Seitenrahmen einzufügen. Erste Erfolge waren vielversprechend. Recht zeitig wurde jedoch klar, dass für statische Seiten eine Nachbearbeitung/Umschreiben der Links notwendig gewesen wäre. Die Seitentitel sind nicht dateisystemsicher, und für Links von und zu Unterseiten wären relative Pfad-Hangeleien nötig gewesen. Ein kleiner Webserver, der die Seitentitel zu dateisystemsicheren Dateinamen übersetzt, erschien als eine gute Lösung. Doch dann zeigte sich, woran auch schon andere Offline-Reader-Projekte gescheitert sind. Seit einigen Mediawiki-Versionen werden die nötigen CSS- und Javascript-Ressourcen von einem Resource-Loader eingebettet. Das geschieht teilweise erst per Nachladen zur Laufzeit. Außerdem sind im Gerüst der Seite Meta-Informationen zum Inhalt eingebettet, die vom CSS und Javascript verwendet werden. Der statische Seitenrahmen musste also ein Template mit Platzhaltern werden. Und dafür musste Mediawiki-Funktionalität nachprogrammiert werden, damit die Daten in derselben Form kodiert sind, wie Mediawiki es tut. Der entscheidenden K.O.-Punkt war jedoch neben den dynamisch nachgeladenen Ressourcen, dass die Suchfunktion so auch nicht geht, denn die ist serverseitig bereitgestellt und hätte ebenfalls nachprogrammiert werden müssen. Die würde übrigens auch nicht vorhanden sein, wenn man einen Links-folgenden Downloader auf die Seite ansetzt, weshalb dieser Ansatz bereits früher schon gescheitert war.

Die jetzige Lösung basiert aus diesen Gründen auf einem "handelsüblichen" Webserver (Nginx – relativ klein und für diesen Zweck völlig ausreichend), einer PHP-Installation und einer SQLite-Datenbank, womit die Notwendigkeit eines Datenbanksystems à la MySQL/MariaDB oder PostgreSQL wegfällt. Diese beiden Voraussetzungen müssen separat besorgt und gemäß der obigen Anleitungen installiert werden. Vom Offline-Projekt werden eine Mediawiki-Installation inklusive aller verwendeten Extensions und einer angepassten Konfigurationsdatei geliefert, die SQLite-Datenbank mit den textlichen Seiteninhalten, die im Wiki verwendeten Bilder, sowie vorgefertigte Konfigurationdateien für Nginx und PHP und ein Start-Script. So zumindest für Windows, die Vorgehensweise unter Linux ist etwas anders.

Feedback

Wir würden uns freuen, wenn Sie uns eine Rückmeldung geben würden, wie Sie unsere Offline-Variante des Wikis einsetzen. Ebenso sind Benachrichtigungen über Fehler oder sonstige Probleme erwünscht (projekt@selfhtml.org). Vielen Dank.