OptiYummy-Update 1.35 auf 1.39

Aus OptiYummy
Zur Navigation springenZur Suche springen

Vorhaben

Nach der Einführung der neuen LTS Verison 1.39.1 des Mediawikis sollte auch dieses System auf die neue Version umgestellt werden. Für die nächsten Monate/Jahre sollten damit zunächst keine größeren Wartungsarbeiten anfallen. Es erfolgte eine komplette Neuinstallation mit anschließendem Übertragen der bisherigen Konfiguration und Inhalte. Folgende Daten wurden zuvor gesichert:

  • Kopie des gesamten Ordners mediawiki_ab (ab = alte Version) vom Server des Hosters per SFTP.
  • Export der Datenbank über Strato-Webseite und PhpMyAdmin. Ausführliche Informationen dazu im letzten Update.
  • Export der Datenbank über Datenbankübersicht bei Strato > Backups. Dort werden Daten zum Download per SFTP auf Port 22 bereitgestellt. (Kleinere Dateigröße als PhpMyAdmin!, Details siehe unten)
  • Packen des gesamten image-Ordners mit anschließendem Download des Archivs per SFTP:
cd STRATO-apps/mediawiki_ab
tar -vczhf image_backup.tgz app/images

Theoretisch wäre ein Update auch möglich (aber nicht empfohlen), wenn man nur die nötigsten Dateien sichert:

  • Backup der Datenbank bei Strato per SFTP.
  • Packen und sichern des aktuellen image-Ordners mit allen Dateien und Unterordnern.
  • Sichern der beiden Dateien robot.txt und php.ini aus dem Ordner mediawiki_ab/app, statt Sicherung des gesamten Ordners.

Für den SFTP-Zugriff wurde FileZilla genutzt. Kopiervorgänge und das Bearbeiten von Dateien sind damit sehr komfortabel möglich.

Installation des MediaWiki-Systems mit STRATO-AppWizard

Das Web-Interface für Hosting-Pakete wird von STRATO kontinuierlich modifiziert. Diese Beschreibung entspricht dem Stand vom Januar 2023:

  • Damit eine Domain (hier: optiyummy.eu) für das neue Wiki-System verwendet werden kann, darf sie nicht extern umgeleitet oder von anderen Anwendungen belegt sein! Dies ist über die Domain-Verwaltung des Webhosting-Paketes zu realisieren (interne Umleitung z.B. auf /.
  • Auf der Startseite des Kundenlogin findet man unten in der Navigationsleiste den Eintrag WordPress & Co.
  • Nach Wählen dieser Funktion findet man in der Kategorie Community-Software die Möglichkeit zur MediaWiki-Installation.
  • Die Domäne optiyummy.eu wurde infolge des Einhaltens der obigen Bedingungen in der Liste zur Auswahl angeboten
  • Nach dem Ausfüllen der geforderten Angaben betätigt man "Fertigstellen":
    • Administrator-Benutzername + Passwort
    • Administrator E-Mail
    • Titel der Webseite
  • Der erste Installationsversuch schlug mit einer kaum hilfreichen Fehlermeldung fehl. Es wurden ein leerer Ordner mediawiki_yz und eine leere Datenbank erstellt.
  • Ein erneuter Versuch mit identischen Angaben führte zum Erfolg.

Das erstellte MediaWiki-System besitzt folgende Konfiguration:

  • Version 1.39.1
  • Es wurde ein Ordner "/STRATO-apps/mediawiki_xx/app" (xx = neue Version) angelegt
  • Danach steht ein MediaWiki-System in seiner Grundeinstellung zur Verfügung.

Wiki-System individuell konfigurieren

Die Konfiguration des Wikis erfolgt bis zum Einspielen der alten Datenbank sehr ähnlich wie bisher. Weitere Details sind bei Unklarheiten im letzten Update nachzulesen. Neuerungen und Anpassungen in dieser Version werden auf dieser Seite explizit hier erläutert.

Die folgenden Einstellungen sind in der Datei LocalSettings.php vorzunehmen, welche sich im Wiki-Verzeichnis mediawiki_xx befindet. Alle hier beschriebenen Änderungen sollten ganz am Ende der Datei im vorgesehenen bereich erfolgen. Die vordefinierten Standardeinstellungen werden dabei überschrieben, bleiben aber bei Problemen in der Datei erhalten und sind nicht verloren.

Die Konfiguration kann komplett per SSH über Kommandozeile oder die "Datei Bearbeiten"-Funktion von FileZilla per SFTP erfolgen. Dabei wird die Datei heruntergeladen, lokal unter AppData/.../FileZilla gespeichert und beim Speichern im Texteditor automatisch (nach expliziter Bestätigung) von FileZilla zurück zum Server übertragen.

  • Server: ssh.strato.de
  • Benutzername: Domän-Name (im Beispiel: www.optiyummy.net)

Vergeben von Nutzerrechten

Wichtig: Standardmäßig können auch anonyme Nutzer Wiki-Seiten editieren! Deshalb sollte man als erste Aktionen die Nutzerrechte ändern.

##----------------------------------------------------------
## Benutzerverwaltung
## Nur noch angemeldeten Benutzern das Bearbeiten erlauben
$wgGroupPermissions['*']['edit'] = false;
## Neuanmeldungen verbieten
$wgGroupPermissions['*']['createaccount'] = false;
## Anlegen neuer Seiten nur für angemeldete Nutzer
$wgGroupPermissions['*']['createpage'] = false;
## Anlegen neuer Diskussionen nur für angemeldete Nutzer
$wgGroupPermissions['*']['createtalk'] = false;
## Verstecken der Edit-Section-Links vor nichtangemeldeten Nutzern
$wgDefaultUserOptions['editsection'] = false;
## Ausschalten der Links auf IP-Diskussionsseiten rechts oben
$wgShowIPinHeader = false;

Es wird ein Creative Commons Lizenzmodell für die Inhalte benutzt. Zulässig ist folgende Verwertung der Inhalte:

  • Verteilung: kopieren, verbreiten und öffentlich Aufführen
  • Modifikation: Anpassung der Inhalte an die eigene Arbeit
  • Kommerzielle Verwertung

Unter der Bedingung:

  • der Namensnennung des Autors oder des Lizenzsgebers,
  • ohne den Eindruck zu erwecken, bei der Verwertung Unterstützung erhalten zu haben.

Dazu sind folgenden Variablen in LocalSettings.php zu ergänzen:

$wgRightsUrl = "https://creativecommons.org/licenses/by/3.0/";
$wgRightsText = "Creative Commons";
$wgRightsIcon = "https://i.creativecommons.org/l/by/3.0/88x31.png";

Indizierung durch Suchmaschinen reglementieren

Man sollte für Suchmaschinen die zuvor aus dem alten Wiki gesicherte Datei robots.txt in den Ordner mediawiki_xx/app kopieren. Weitere Hinweise dazu im letzten Update.

Anpassen des Erscheinungsbildes

Wahl eines Skins

  • Standardmäßig ist in der Version 1.39 der Skin "vector" eingestellt.
  • Durch Einfügen folgender Zeile in LocalSettings.php kann man "monobook" wählen:
## Skin umstellen:
$wgDefaultSkin = "monobook";
  • Bei Bedarf kann der Skin hier auch problemlos nachträglich angepasst werden.
  • Ein Ausblenden von Funktionen für nicht angemeldete Nutzer wird vorläufig nicht vorgenommen!

Eigenes Logo und Favicon

  • Die erforderlichen Daten kommen später aus dem importierten image-Ordner. Zu Testzwecken können Sie jetzt schon in den noch leeren Ordner kopiert werden.
  • Alternativ kann man auch warten, bis der gesamte Ordner wieder hergestellt wurde (siehe unten). Dann funktionieren nachfolgende Änderungen nicht sofort. Alternativ kann auch jetzt schon der gesamte Ordner importiert werden.
  • Einfügen in LocalSettings.php:
## Eigenes Logo 135x135 Pixel einbinden
$wgLogos = [
'1x' => "/images/logo.gif",
];
$wgFavicon = "/images/favicon.ico";
  • Die Variable $wgLogos wurde im Vergleich zur letzten Version umbenannt ($wgLogo, ohne s).
  • Das neue Array enthält theoretisch auch einen Eintrag 'icon' für das Favicon. Leider wurde das Icon über anpassen dieses Pfads nicht angezeigt.
  • Die neue Variante ist deshalb eine Kombination des Arrays für das große Logo und der alten Variable $wgFavicon für die Anzeige im Browsertab.
  • Achtung: Die Darstellung der Bilder funktioniert nur, wenn der Direktzugriff im image-Ordner durch die .htaccess-Datei erlaubt ist. Dazu die alte Datei mit einfügen bzw. gleich komplett mit dem gesicherten image-Ordner importieren.

Hochladen von Dateien konfigurieren

Für das Wiki-System muss man die Konfiguration der Datei-Größe und die zu verwendende Verzeichnis-Struktur über LocalSettings.php vornehmen. Dazu folgende Konfiguration anfügen:

$wgEnableUploads       = true;
$wgMaxUploadSize = 1024*1024*200; # 200MB
$wgUploadSizeWarning = 1024*1024*10; # 10MB
$wgUseImageResize = true;
$wgUseImageMagick = true;
$wgImageMagickConvertCommand = "/usr/bin/convert";
$wgFileExtensions = array( 'png', 'gif', 'jpg', 'jpeg', 'zip', 'pdf', 'hlp', 'swf', 'wmv', 'svg' );
##fix for thumbnail error 25:
$wgMaxImageArea = 3e7;
$wgMaxShellMemory = 1024000;
$wgMaxShellFileSize = 204800;
## Directories images/archive, images/thumb and images/temp werden automatisch angelegt!
$wgHashedUploadDirectory = false; # nicht Bilder-Verzeichnisstruktur "/a/ab/foo.png" verwenden
  • Außerdem muss man die zuvor gesicherte Datei php.ini in das Wurzelverzeichnis des Wiki-Systems speichern (dort, wo auch LocalSettings.php liegt).

Uebertragen der Inhalte

Hintergründe und Details zu den hier verwendeten Methoden finden sich wieder im letzten Update. Aktuelle Änderungen sind mit aufgeführt. Zunächst die wichtigsten Schritte zum Sichern des Vorgängersystems:

Sichern der Datenbank:

  • Das kompakteste Backup der Datenbank kam aus dem Strato-eigenen Backupsystem.
  • Der Zugriff erfolgt über die Weboberfläche > Datenbanken und Webspace > Datenbankverwaltung > Backups anzeigen (entsprechende Datenbank des alten Wikis wählen)
  • Man wählt anschließend "Sichern und herunterladen" für die aktuellste Version. Achtung: Sehr kurzfristige Änderung <24h sind unter Umständen noch nicht enthalten!
  • Strato stellt anschließend Zugangsdaten für einen SFTP-Server (Port: 22) bereit. Der Download kann z.B. per FileZilla erfolgen.
  • Das erzeugte Archiv ist nur etwa halb so groß wie beim Export über PhpMyAdmin.

Bilder: Vor dem erneuten Einlesen der Datenbank sollte spätestens jetzt die alten Bilddateien wieder hinzugefügt werden.

  • Umbenennen des bestehenden image-Ordners (z.B. image_original). Dieser kann dann später gelöscht werden.
  • Zum Einfügen des zuvor exportierten, archivierten Ordners gibt es verschiedene Wege. Wegen der großen Datenmenge ist der direkte Weg über SFTP sehr zeitaufwändig.
  • Schneller ist es, das erzeugte Archiv hochzuladen und per SSH (z.B. mit PUTTY) auf dem Server selbst zu entpacken.
  • Der hier beschriebene Weg ist dabei nicht der schnellste, beugt aber Fehlern bei mangelnder Erfahrung im Umgang mit den Consolen-Programmen vor. Eine große Menge Bilder vom falschen Ort wieder sauber zu entfernen kann sonst unter Umständen aufwändig sein.
  • Zunächst wird das Archiv per SFTP auf den Server in ein freies Verzeichnis geladen, hier im Beispiel /TEMP.
  • Dort kann man das Archiv ohne Risiko mit seiner bestehenden Ordnerstruktur entpacken:
cd TEMP
tar -xpf image_backup.tgz
  • Anschließend kopiert man nur den image-Ordner und dessen Inhalt an die korrekte Stelle im neuen Wiki-System:
cd ..
cp -rp TEMP/app/images STRATO-apps/mediawiki_xx/app
  • Die Dateien in /TEMP kann man löschen.

Erneutes Einlesen der Datenbank:

  • Zur Sicherheit sollte man die Original-Datenbank der "nackten" Installation mit PhpMyAdmin sichern. Diese ist nur bei unvorhergesehenen Fehlern nötig, dann aber evtl. hilfreich.
  • Seit Version 1.35 werden den Datenbankeinträgen Präfixe vorangestellt. Diese mussten dann beim Import ergänzt werden.
  • Bei einem Update auf Version 1.39 muss man nicht unbedingt die Datenbankeinträge anpassen, sondern kann in der neuen LocalSettings.php das Präfix entsprechend der bereits bestehenden Datenbank definieren (Am Ende der Datei einfügen):
## Datenbank mit altem Praefix einbinden
# MySQL specific settings
$wgDBprefix = "ab12_";
  • Achtung: Der Platzhalter ab12_ ist durch das korrekte Präfix zu ersetzen.
  • Die entpackte *.sql Datei sollte man für den erneuten Import dann in den neuen Ordner mediawiki_xx hochladen (dort entpacken ist per Kommandozeile natürlich auch möglich).
  • In diesem Ordner führt man dann per SSH folgenden Befehl mit den entsprechenden Zugangsdaten der Datenbank aus:
mysql -h rdbms -u BENUTZERNAME -pPASSWORT dbxxxxxx < optiyummy_export.sql

Die Datenbank-Strukturen der Versionen 1.35 und 1.39 sind trotzdem noch unterschiedlich. Deshalb muss bei jedem MediaWiki-Update auch ein Update der Datenbank erfolgen:

  • Die fehlerhaften Datenbank-Einträge für die aktuelle Version 1.39 werden durch Ausführen des Update-Script im Web-Browser generiert nach Aufruf von:
 https://www.optiyummy.eu/mw-config/index.php 
  1. Bestätigen der Spracheinstellungen mit Weiter.
  2. Wert des $wgUpgradeKey für das vorhandene Wiki als Aktualisierungsschlüssel eingeben (ohne die ""), danach Weiter.
  3. MediaWiki-Tabellen aktualisieren mit Weiter bestätigen.

Danach läuft das MediaWiki wie gewünscht mit den portierten Inhalten.

Weitere Anpassungen

Im vorherigen Update musste die Druckversion der Seite angepasst werden. Diese Änderung ist scheinbar nicht mehr notwendig.

Extensions

Für die genutzten Erweiterungen finden sich Hinweise im letzten Update. Prinzipiell ist es ausreichend die aktuellen Quelldateien herunterzuladen und jeweils den entpackten Ordner auf dem Server im Pfad /STRATO-apps/mediawiki_x/app/extensions hinzuzufügen. Der Ordnername entspricht dabei der Erweiterung (ohne Suffixe wie "-master" oder ähnlichem). Es empfiehlt sich die Daten lokal zu entpacken und nur den Ordner mit den eigentlichen Inhalten korrekt benannt auf den Server zu laden.

Die Erweiterungen werden dann in LocalSettings.php eingefügt:

## Extensions:
wfLoadExtension( 'WikiEditor' );
wfLoadExtension( 'EmbedVideo' );
wfLoadExtension( 'SimpleMathJax' );
$wgSmjSize = 125;
wfLoadExtension( 'HitCounters' );

Auf der Wikiseite Spezial:Version wird angezeigt, ob die Erweiterungen erfolgreich installiert wurden.

Ausblenden von Links fuer nicht angemeldete Nutzer

Nachfolgend werden Anpassungen der Darstellung vorgenommen. Mit Einführung von Version 1.39 wurde das bereits bestehende System von Hooks für Extensions und Skins deutlich konsequenter umgesetzt. Daraus ergeben sich einige Änderungen:

  • Es gibt deutlich mehr Dateien, die modular bzw. objektorientiert aufeinander aufbauen.
  • Da das Wiki-System und Skins/Extensions von unterschiedlichen Teams entwickelt werden, gibt es keine zusammenhängende Dokumentation.
  • Aus der Codedokumentation lässt sich schließen, dass Skins im neuen System vor allem auf die Dateien mediawiki_xx/app/includes/skins/Skin.php und mediawiki_xx/app/includes/skins/SkinTemplate.php zugreifen.

Ausblenden von Registerkarten für nicht angemeldete Nutzer

Die nachfolgende Funktion kann ans Ende von LocalSettings.php eingefügt werden und sorgt dafür, dass entsprechende Navigationselemente für nicht angemeldete Nutzer nicht mehr angezeigt werden:

## Tabs vor nicht eingeloggten Nutzern verbergen
function efAddSkinStylesAnon( OutputPage &$out, Skin &$skin ) {
	global $wgUser;
        if($wgUser->isAnon()) {
		$out->addInlineStyle( '#ca-history { display:none !important; }' ); // Hide history tab
		$out->addInlineStyle( '#ca-viewsource { display:none !important; }' ); // Hide source tab
		$out->addInlineStyle( '#ca-talk { display: none !important; }' ); // hide discuccion tab
		$out->addInlineStyle( '#ca-nstab-main { display: none !important; }}' );
		$out->addInlineStyle( '#ca-nstab-project { display: none !important; }' );
		$out->addInlineStyle( '#ca-nstab-special { display: none !important; }' );
        }
        return true;
}
$wgHooks['BeforePageDisplay'][] = 'efAddSkinStylesAnon';

Diese Lösung ist eine abgewandelte Form eines Vorschlags aus diesem Beitrag.

Die alte Version würde hier weiterhin funktionieren, indem man die entsprechenden php/css Zeilen in der Datei mediawiki_xx/app/includes/skins/Skin.php ergänzt. Die Anpassung in LocalSettings.php ist aber deutlich wartungsfreundlicher. Außerdem funktioniert der alte Weg nur mit dem vector-Skin wirklich sauber. Im monobook-Skin wird die Darstellung der Fußzeile für abgemeldete Nutzer beeinträchtigt. Die Ursache hierfür konnte nicht genau geklärt werden.

Ausblenden der Werkzeuge für nicht angemeldete Nutzer

Es gibt leider keine Möglichkeit die Werkzeuge (Toolbox) per Konfiguration auszublenden. Hier ist es nur möglich den Code anzupassen, was die Änderung anfällig für Fehler nach Updates macht (muss dann erneut angepasst werden). Durch das neue modulare Design ist die Anpassung immerhin gleich für alle Skins gültig, sofern diese die hooks korrekt implementieren. Die Toolbox wird in der Datei mediawiki_xx/app/includes/skins/Skin.php in Zeile 1530 (bzw. Suche nach "makeToolbox") erzeugt. Dort ergänzt man eine Abfrage, die den entsprechenden Code nur ausführt, wenn ein User eingeloggt ist:

global $wgUser;
if(!$wgUser->isAnon()) {
	$sidebar['TOOLBOX'] = $this->makeToolbox(
		$this->buildNavUrls(),
		$this->buildFeedUrls()
	);
}

Fusszeile nur mit Impressum

  • Da im neuen System viele Komponenten per hook auf die Fußzeile zugreifen können, ist die Datenstruktur verändert worden.
  • Eine Anpassung wie zuvor über den Code ist daher aufwändig.
  • Die Inhalte der Fußzeile basieren aber auf bearbeitbaren Wikiartikeln. Diese kann man aufrufen und den Inhalt löschen. Der entsprechende Eintrag verschwindet dann.
  • Die Seiten sind erreichbar über https://optiyummy.eu/index.php?title=MediaWiki:BEZEICHNER
  • Dieses Vorgehen sollte dafür sorgen, dass die Anpassung auch nach Updates erhalten bleibt.
  • Die folgende Liste zeigt, welche Artikel bearbeitet werden müssen (Inhalt löschen). Außerdem ist hier der Originalinhalt zu Dokumentationszwecken festgehalten:
    • lastmod, Bezeichner: Lastmodifiedat
      Diese Seite wurde zuletzt am $1 um $2 Uhr bearbeitet.
    • copyright, Bezeichner: Copyright
      Der Inhalt ist verfügbar unter der Lizenz $1, sofern nicht anders angegeben.
    • privacy, Bezeichner: Privacy
      Datenschutz
    • abaout, Bezeichner: Aboutsite
      Über {{SITENAME}}
    • disclaimers, Bezeichner: Disclaimers
      Haftungsausschluss
      Achtung: hier den Originaltext ersetzen durch: Impressum
  • Die Anzahl der Seitenaufrufe wird anschließend weiterhin angezeigt.
  • Eine Anpassung sollte hier in der entsprechenden Extension vorgenommen werden.
  • Dazu kann in mediawiki_xx/app/extensions/HitCounters/includes/HitCounters.hooks.php Zeile 163 auskommentiert werden:
//$footerItems['viewcount'] = $viewcountMsg;	//viewcount nicht in footer schreiben
  • Achtung: Im Gegensatz zu den anderen Anpassungen wird sich die HitCounter-Erweiterung nach einem Update vermutlich wieder zurücksetzen und muss neu angepasst werden.

Resultat

  • In der aktuellen Version zeigt der monobook-Skin die Suchleiste immer als zweites Element der Sidebar an. Im vector-Skin ist sie rechts oben zu finden.
  • Dieses Verhalten lässt sich nicht anpassen.
  • Als Workaround wurde eine zusätzliche Kategorie "Suche" ohne weiteren Inhalt als erstes Element in die Sidebar eingefügt.
  • Damit wird die Suche jetzt optisch als erstes element angezeigt und teilt die übrigen Kategorien nicht auf.

Das sonstige Erscheinungsbild ist unverändert.