Mediawiki

aus www.kruedewagen.de, Homepage von Ralf und Judith Krüdewagen (Kruedewagen)
Version vom 19. Juni 2018, 07:09 Uhr von Rkr (Diskussion | Beiträge) (→‎Extensions kopieren)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Update komplett

Diese Anleitung beinhaltet nicht das Anfertigen einer Sicherungskopie der MySQL DB. Diese Kopie sollte aber i.d.R. immer durch ein tägliches Backup erfolgen, z.B. mittels rsnapshot. Alle Schritte müssen als root ausgeführt werden.

Backup der alten Umgebung

DIR=w
cd /srv/www/htdocs
rm -rf $DIR.old
cp -rp $DIR $DIR.old
chmod 700 $DIR.old

Neuen Tarball auspacken

tar zxvf /opt/pkg/mediawiki/mediawiki-1.16.1.tar.gz

Im Folgende ist NEWDIR das neue Verzeichnis (i.d.R. der Art mediawiki-1.16.1), in das das neue Release ausgepackt wurde, und wiki das Verzeichnis mit der alten Software.

Owner anpassen

NEWDIR=mediawiki-1.16.1
chown -R root:root $NEWDIR

Images kopieren

cd $NEWDIR
cp -rp ../$DIR/images .

Extensions kopieren

Nicht mehr zu empfehlen:

mv extensions extensions.orig
cp -rp ../$DIR/extensions .
cp -rp extensions.orig/* extensions/
rm -rf extensions.orig
Achtung: Seit Version 1.18 wird MediaWiki mit einigen Extensions ausgeliefert. Diese Extensions sollten möglichst nicht mit denen aus dem alten Verzeichnis überschrieben werden.

Zu kopierende Extensions (nicht unter compose-Kontrolle):

  • PageForms
  • VisualEditor

Zu empfehlen daher:

cp -rp ../$DIR/extensions/PageForms extensions/
cp -rp ../$DIR/extensions/VisualEditor extensions/
echo
cp -rp ../$DIR/extensions/Echo extensions/
cp -rp ../$DIR/extensions/Thanks extensions/
cp -rp ../$DIR/extensions/ContributionScores extensions/
cp -rp ../$DIR/extensions/CSS extensions/
cp -rp ../$DIR/extensions/EditSubpages extensions/
cp -rp ../$DIR/extensions/EtherpadLite extensions/
cp -rp ../$DIR/extensions/MagicNoCache extensions/
cp -rp ../$DIR/extensions/Piwik extensions/
cp -rp ../$DIR/extensions/Widgets extensions/
cp -rp ../$DIR/extensions/HeaderTabs extensions/

Extensions Update

Einige zusätzliche Extensions haben spezifische Branches für MediaWiki Haupt-Releases (z.B. origin/REL1_25). Diese sollten aktualisiert werden.

  • PageForms
  • Echo
  • Thanks
  • SyntaxHighlight_GeSHi
cd extensions/SyntaxHighlight_GeSHi
composer update
vi vendor/kzykhys/pygments/src/KzykHys/Pygments/Pygments.php
$process = $builder->getProcess()->setStdin($code);
$process = $builder->getProcess()->setInput($code);
  • VisualEditor
    • nicht vergessen: "cd VisualEditor; git submodule update --init"
  • SemanticFormsInputs, fix for MW 1.26 see [1]

Composer konfigurieren und aktualisieren

Wenn composer benutzt wird - seit MW 1.25 mandatory:

  • Die zusätzlichen Pakete (z.B. Semantic MediaWiki) aus ../$DIR/composer.json in die "require" Sektion eintragen
vi composer.json
Beispiel:
{
        "require": {
                "cssjanus/cssjanus": "1.1.1",
                "ext-iconv": "*",
                "leafo/lessphp": "0.5.0",
                "liuggio/statsd-php-client": "1.0.12",
                "oojs/oojs-ui": "0.11.3",
                "php": ">=5.3.3",
                "psr/log": "1.0.0",
                "wikimedia/cdb": "1.0.1",
                "wikimedia/composer-merge-plugin": "1.0.0",
                "wikimedia/utfnormal": "1.0.2",
                "zordius/lightncandy": "0.18",
                "mediawiki/semantic-media-wiki": "~2.5",
                "mediawiki/semantic-result-formats": "~2.5",
                "phpoffice/phpexcel": "1.8.0",
                "mediawiki/universal-language-selector": "2017.10"
        }
}
  • vendor Verzeichnis kopieren
cp -rp ../$DIR/vendor .
  • Composer Update durchführen (fehlende Dateien werden dabei installiert und alle Versionen aktualisiert)
composer selfupdate
composer update
  • Dateien in vendor und extentions prüfen

LocalSettings.php kopieren

cp -p ../$DIR/LocalSettings.php* .

Optional: Logo und Favicon kopieren

cp -p ../$DIR/*logo.png .
cp -p ../$DIR/*logo.ico .

Optional: spezielle Skins kopieren

cp -rp ../$DIR/skins/bento* ./skins/

Upgrade

php maintenance/update.php

bzw.

php maintenance/update.php --skip-external-dependencies

Note: Wenn dieser Befehl fehlschlägt oder keine Ausgabe erzeugt, könnte es ein Problem mit dem "PHP memory limit" geben oder mit dem Laden einer Extension. Bitte Logs prüfen (syslog). Diesen Schritt nicht überspringen!

Owner und Permissions

chown wwwrun images

Web-Configuationsinterface deaktivieren

chmod 700 mw-config

Scharf schalten

cd ..
rm -rf $DIR
mv $NEWDIR $DIR

Update per Patch

Der Patch muss genau zur installierten Version passen. Alle Schritte müssen als root ausgeführt werden. Beispiel für Update von 1.19.0 nach 1.19.1.

Backup der alten Umgebung

DIR=w
cd /srv/www/htdocs
rm -rf $DIR.old
cp -rp $DIR $DIR.old
chmod 700 $DIR.old

Patch einspielen

cd $DIR
patch -p1 < /opt/pkg/mediawiki/mediawiki-1.19.1.patch

Upgrade

cd maintenance
php ./update.php

Namespaces

Extensions

Suche

Full-Text Suche:

RigorousSearch

Bei Tabellen vom InnoDB-Typ wird der Text als BLOB gespeichert. BLOB-Typen sind case sensitive (im Gegensatz zu TEXT). Daher findet in diesem Fall RigorousSearch nur Strings, die mit korrekter Groß-/Kleinschreibung angegeben wurden.

Änderung am Quellcode, um Suche case-insensitive zu machen (durch Einfügen einer CAST() Funktion):

$queryTxt = "SELECT old_text FROM " . $db->tableName('text') .
                    " WHERE old_id = " . $text_id .
                    " AND CAST(old_text as CHAR) LIKE '%" . $pattern . "%'";

Note: In MediaWiki 1.18 ist $wgMessageCache entfernt worden. Daher muss die $wgMessageCache Zuweisung in der Extension deaktiviert werden. Siehe auch [2].

Elasticsearch

  • CirrusSearch
  • Elastica

Semantic MediaWiki (SMW)

Ausgabe formatieren:

Video

History und Revisionen löschen

  • Special:RevisionDelete
    • Seit Version 1.60 Bestandteil von Mediawiki.
    • Einzelne Revisionen können verborgen werden (zeige/verstecke).
    • Die Sichtbarkeit kann dabei für folgende Dinge eingeschränkt werden: Text, Bearbeitungskommentar, User.
    • Einschränkungen können wieder rückgängig gemacht werden.
    • Jede Revision muss damit einzeln bearbeitet werden.
  • Extension:SpecialDeleteOldRevisions2
    • Irreversibles Löschen von alten Revisionen
    • Anwendbar auf einzelne oder alle Seiten.
    • Wildcard-Support
    • Datum und Namensräume können angegeben werden.

Git

User

User-Beiträge migrieren und User löschen:

Dynamic parser functions that trigger on the current user:

Benachrichtiungen

Echo (Notifications)

Extensions:

Doku:

Visual Editor

Siehe:

Installation / Konfiguration:

  • Node.js: Version 5.x
  • ACHTUNG: Bei verschiedenen Node.js Versionen auf $PATH achten (wenn "npm" ausgeführt wird).
  • php5-curl ist nötig
  • /etc/parsoid/localsettings.js
        parsoidConfig.setMwApi({ uri: 'http://www.example.com/w/api.php', domain: 'example1', prefix: 'example1' });
        parsoidConfig.setMwApi({ uri: 'http://www.example.org/api.php', domain: 'example2', prefix: 'example2' });
  • /etc/parsoid/parsoid.env
        VCAP_APP_PORT=8000
        NODE_PATH=/opt/parsoid/node_modules
        PORT=8000
        INTERFACE=127.0.0.1
  • Symlink: /opt/parsoid/localsettings.js -> /etc/parsoid/localsettings.js
  • /etc/systemd/system/multi-user.target.wants/parsoid.service
[Unit]
Description=Mediawiki Parsoid web service on node.js
Documentation=http://www.mediawiki.org/wiki/Parsoid
Wants=local-fs.target network.target
After=local-fs.target network.target

[Install]
WantedBy=multi-user.target

[Service]
Type=simple
User=nobody
Group=nobody
WorkingDirectory=/opt/parsoid
EnvironmentFile=-/etc/parsoid/parsoid.env
ExecStart=/usr/bin/node /opt/parsoid/bin/server.js -n 2
KillMode=process
Restart=on-success
PrivateTmp=true
StandardOutput=syslog
  • Testen (holt Seite vom Wiki und parst den Inhalt):
curl -L http://localhost:8000/example1/v3/page/html/Hauptseite

Scoring und Bewertungen

Diverse

Skins

Allgemeine Infos

bentofluid

  • Installationsort: ./skins/bento*
-rw-r--r-- 1 root root   418 25. Sep 14:47 bento.deps.php
-rw-r--r-- 1 root root   634 25. Sep 15:25 bentofluid.php
drwxr-xr-x 6 root root  4096 26. Sep 11:52 bento
-rw-r--r-- 1 root root 17339 26. Sep 13:52 bento.php
lrwxrwxrwx 1 root root     5  4. Jan 08:04 bentofluid -> bento
lrwxrwxrwx 1 root root    14  4. Jan 08:04 bentofluid.deps.php -> bento.deps.php
  • Meine Farbe: #265e15

Noch anpassen:

  • global-navigation (??)

Aktivierung eines Skins

Default-Skin ist einzustellen in LocalSettings.php:

 //$wgDefaultSkin = 'monobook';
 $wgDefaultSkin = 'bentofluid';
 $bento_lang = "de";

User-defined Skin unter Spezial:Einstellungen.

Tipps und Tricks

MemCache deaktivieren

Einstellung in LocalSettings.php:

// Problems with slow response due to MemCache problems
$wgMemCachedServers = array('');
$wgMessageCacheType = CACHE_NONE;
$wgParserCacheType = CACHE_NONE;

Bilder konvertieren

Falls es zu Fehlern kommt beim Erstellen von skalierten Bildern (vor allem wenn gleichzeitig mehrere Bilder verarbeitet werden), dann hilft folgende Einstellung in LocalSettings.php:

$wgImageMagickConvertCommand = "/usr/bin/convert";
## if convert does not work for multiple images on one go
$wgMaxShellMemory = 512000;

URL kürzen

LocalSettings.php:

$wgScriptPath = '/w';         # Path to the actual files, in subdirectory here!!
$wgArticlePath = '/wiki/$1';  # Virtual path. This directory SHOULD be different from the one used in $wgScriptPath
$wgUsePathInfo = true;        # Enable use of pretty URLs

Hinweise:

  • Alte Links mit /wiki/index.php/ funktionieren danach nicht mehr, wenn man MediaWiki zuvor nach /wiki installiert hat.

Apache:

RewriteRule ^/?wiki(/.*)?$ %{DOCUMENT_ROOT}/w/index.php [L]

Weblinks:

Bookmarklet

Markiertes Wort suchen auf einer Wiki-Seite, siehe Beispiele:

javascript:(function(){q=window.getSelection().toString();if(!q)q=prompt('Kruedewagen:');%20if(q)location.href='https://kruedewagen.de/w/wiki.phtml?search='+encodeURI(q);})()
  • Ab MediaWiki 1.29 mit "index.php" [1]:
javascript:(function(){q=window.getSelection().toString();if(!q)q=prompt('Kruedewagen:');%20if(q)location.href='https://kruedewagen.de/w/index.php?search='+encodeURI(q);})()

MIME Type Checks beim Datei-Upload

Die ZIP-basierten neuen MS Office Formate lassen sich nicht korrekt erkennen, sondern werden als (application/zip) erkannt. Abhilfe:

  • MIME Type Check deaktivieren durch $wgVerifyMimeType= false;.
  • Workaround implementieren, damit (application/zip) gültig wird (siehe unten).

Siehe auch:

Debugging

Backup

XML Dump

Alle Wiki-Seiten als XML exportieren:

php dumpBackup.php --current --output=bzip2:/tmp/wiki-dump.xml.bz2

Performance

Tools

Update-Probleme

Probleme beim Update von MW 1.26.x nach 1.27:

  • Semanitic MediaWiki muss auf 2.4 aktualisiert werden.
  • Extension "CategoryWatch" benutzt deaktivierte "wfMsg()" Funktionen. Lösung: Ersetzen siehe [3].
  • Extension "EditSubpages" benutzt deaktivierte "wfMsg()" Funktionen. Lösung: Update der Extension.
  • Extension "HeaderTabs" benutzt deaktivierte "wfMsg()" Funktionen. Lösung: Update der Extension.
  • Extension "PdfExport" benutzt deaktivierte "wfMsg()" Funktionen und produziert weitere Fehler. Lösung: nicht bekannt.

Composer

Installation (einmalig systemweit):

zypper in php5-phar php5-openssl
curl -sS https://getcomposer.org/installer | php
    ODER curl -sS https://getcomposer.org/installer --proxy http://localhost:3128 | php
mv composer.phar /usr/local/bin/
ln -s /usr/local/bin/composer.phar /usr/local/bin/composer

Semantic MediaWiki

Some remarks and experiences after upgrading to SMW 1.9.

  • Installation
cd $WIKIBASEDIR
composer require mediawiki/semantic-media-wiki "1.9.*,>=1.9.0.1"
composer require mediawiki/semantic-result-formats "1.9.*,>=1.9.0.1"
  • The composer install process installs following items to $WIKIBASEDIR
 ./composer.json
 ./vendor/composer/
 ./vendor/data-values/
 ./vendor/param-processor/
 ./extensions/SemanticMediaWiki
 ./extensions/SemanticResultFormats
 ./extensions/Validator
  • Therefore, when upgrading MW you need to consider the new file/dir "composer.json" and "vendor/" to be copied over.
  • There is no setting made by compose in LocalSettings.php.
  • SemanticMediaWiki, SemanticResultFormats, Validator and some Data Value extensions are listed in the MW GUI under "Special:Version -> Installed Extensions" (even though they are not included in LocalSettings.php, this seems to be organized by the composer now). Therefore, all these extensions can be used by other extensions - they are not limited to SMW family.
  • SRF 1.8 also runs with SMW 1.9 if you don't want to upgrade SRF yet.
  • SideBarMenu 0.1 also runs with SMW 1.9 (since only SideBarMenu 0.2 needs Validator)
composer require mediawiki/side-bar-menu @dev
"mediawiki/side-bar-menu": "@dev"
  • The new SMW setup also works after upgrading to MW 1.22.1 (compatibility)
  • When an error occurs like "mediawiki/semantic-media-wiki: 2.5.0 installed, ~2.5 required.", just execute:
php maintenance/update.php --skip-external-dependencies

Disable an extension controlled by composer

To disable an extension that has been installed with composer:

  • remove the require line from composer.json
  • run "composer update"

To enable it again:

  • re-add the require line into composer.json
  • run "composer update"

Projekte

Wikidata

Statistiken und Sammlungen

Wiki Farm

MediaWiki für Unternehmen

  • Blue Spice als MediaWiki Enterprise Distribution / Corporate Wiki
    • siehe LM 09/11 S.62

Literatur

Weblinks

Einzelnachweise