Mediawiki
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.41.0.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.41.0 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): u.a.
- PageForms
Zu empfehlen daher:
cp -rp ../$DIR/extensions/PageForms extensions/ echo 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/Matomo extensions/ cp -rp ../$DIR/extensions/Widgets extensions/ cp -rp ../$DIR/extensions/HeaderTabs extensions/
Seit 1.40 sind Thanks und Echo im Bundle.
Extensions Update
Fast alle zusätzlichen Extensions haben spezifische Branches für MediaWiki Haupt-Releases (z.B. origin/REL1_40). Diese sollten aktualisiert werden.
- PageForms
cd extensions/PageForms git fetch git checkout REL1_41 cd ../..
- MagicNoCache
- EditSubpages
- CSS
- Widgets
- Prüfe nach Update die Seite https://www.kruedewagen.de/wiki/Vorlage:Piwik_Tracking_deaktivieren
- ContributionScores
- EtherpadLite
- HeaderTabs
Spezielle Updates:
- SyntaxHighlight_GeSHi
cd extensions/SyntaxHighlight_GeSHi composer update --no-dev
- OATHAuth
composer update --no-dev
Composer konfigurieren und aktualisieren
Wenn composer benutzt wird - seit MW 1.25 mandatory:
- Die zusätzlichen Pakete (z.B. Semantic MediaWiki) aus ../$DIR/composer.local.json in die "require" Sektion eintragen
vi composer.local.json
- Beispiel:
{ "require": { "mediawiki/semantic-media-wiki": "~4.0.0", "mediawiki/semantic-result-formats": "~4.0.0", "mediawiki/universal-language-selector": "2022.01" } }
- Falls die Datei bereits existiert (als bei einem Update):
cp -p ../$DIR/composer.local.json .
- Composer Update durchführen (fehlende Dateien werden dabei installiert und alle Versionen aktualisiert)
composer selfupdate
composer update --no-dev
- Composer ggf. downgraden auf Version 1:
composer selfupdate --1
- 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 . ln -s rawino_logo.ico favicon.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
composer update --no-dev php maintenance/update.php --skip-external-dependencies
Namespaces
- MediaWiki Namespace Help (for users)
- MediaWiki Namespace Manual (for admins)
- Using custom namespaces
Extensions
Suche
Full-Text Suche:
- http://www.mediawiki.org/wiki/Extension:SphinxSearch
- http://www.mediawiki.org/wiki/Extension:LuceneSearch
- http://www.mediawiki.org/wiki/Extension:Hyper_Estraier
- http://www.mediawiki.org/wiki/Extension:RigorousSearch
- http://www.mediawiki.org/wiki/Extension:GoogleSiteSearch
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 [1].
Elasticsearch
- CirrusSearch
- Elastica
Semantic MediaWiki (SMW)
- http://semanticweb.org/wiki/Semantic_MediaWiki
- siehe LM 07/09 S.60 (SMW und Semantic Forms) - sehr guter Artikel
- siehe iX 11/07 S.102
- http://www.linux-magazin.de/news/cebit_2009_wiki_2_0_mit_semantic_mediawiki
- Semantic MediaWiki Conference - mit Tutorials, Präsentationen (auch von älteren Veranstaltungen)
- Web Platform Docs als Beispiel
- SMW+
- Semantic MediaWiki vs. SharePoint (wikiworks.com)
- Semantic MediaWiki: A promising platform for the development of web geospatial crowdsourcing applications
Ausgabe formatieren:
- http://semantic-mediawiki.org/wiki/Help:Template_format
- http://smw.referata.com/wiki/Use_the_ask_template_format_to_create_tabular_output
- http://smw.referata.com/wiki/Join_data_from_two_pages_into_one_table
- Consistency Check: https://www.semantic-mediawiki.org/wiki/Help:Upgrade/Upgrade_and_setup_consistency
- Datei: .smw.json
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:
- https://www.mediawiki.org/wiki/Echo_%28Notifications%29?uselang=de
- https://de.wikipedia.org/wiki/Hilfe%3AEcho
- https://en.wikipedia.org/wiki/Wikipedia:Notifications
- https://en.wikipedia.org/wiki/Wikipedia:Notifications/Thanks
Visual Editor
Siehe:
Installation / Konfiguration
Diese Installation ist nicht mehr nötig, da Parsoid mittlerweile in MediaWiki als Bundle integriert ist.
- Node.js: Version 10.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
- http://www.mediawiki.org/wiki/Extension:RawMsg
- http://meta.wikimedia.org/wiki/EasyTimeline
- http://meta.wikimedia.org/wiki/ParserFunctions
- http://www.mediawiki.org/wiki/Extension:SyntaxHighlight_GeSHi
- http://www.mediawiki.org/wiki/Extension:Pdf_Export
- http://www.mediawiki.org/wiki/Extension:SimpleFeed , PHP 5.3 problem
- http://www.mediawiki.org/wiki/Extension:MagicNoCache
- https://www.mediawiki.org/wiki/Extension:MobileFrontend
- http://www.mediawiki.org/wiki/Extension:CategoryWatch
Skins
Allgemeine Infos
- http://www.mediawiki.org/wiki/Manual:Skins/de
- http://www.mediawiki.org/wiki/Manual:Skin_configuration
- http://blog.redwerks.org/2012/02/08/mediawiki-skinning-tutorial/
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:
- http://www.mediawiki.org/wiki/Manual:Short_URL
- http://www.mediawiki.org/wiki/Manual:Short_URL/Apache
- http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html
Bookmarklet
Markiertes Wort suchen auf einer Wiki-Seite, siehe Beispiele:
- https://en.wiktionary.org/wiki/Help:Tips_and_tricks/Bookmarklets
- Beispiel kruedewagen.de für Firefox:
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
- Wiki-Inhalt und andere Webinhalte offline mit openZIM, siehe pro-linux.de
- Visual editor project - WYSIWYG Editor
- http://www.mediawiki.org/wiki/Extension:VisualEditor
- http://www.mediawiki.org/wiki/VisualEditor
- https://www.mediawiki.org/wiki/VisualEditor:Welcome
- http://de.wikipedia.org/wiki/Wikipedia:Technik/Text/Edit/VisualEditor
- http://www.heise.de/newsticker/meldung/Wikipedia-testet-WYSIWYG-Editor-1623863.html
- http://www.heise.de/meldung/Neuer-Wikipedia-Editor-fuer-alle-1925045.html
- RENDER-Tools für Statistiken und Tasks, siehe auch Wikimedium 04/12.
- http://en.wikipedia.org/wiki/Wikipedia:VisualEditor
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 [2].
- 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 or composer.local.json
- run "composer update --no-dev"
To enable it again:
- re-add the require line into composer.json or composer.local.json
- run "composer update --no-dev"
Projekte
Wikidata
- Wikidata Projekt
- http://www.wikidata.org/wiki/Wikidata:Main_Page
- Report siehe c't 09/13 S.76
- SMW and Wikidata
Statistiken und Sammlungen
- WikiApiary collects, graphs and analyzes information about MediaWiki websites.
Wiki Farm
- The Why and How of Wiki Farms - with SMW
MediaWiki für Unternehmen
- Blue Spice als MediaWiki Enterprise Distribution / Corporate Wiki
- siehe LM 09/11 S.62
Literatur
- Working with MediaWiki, November 2012, Yaron Koren
Weblinks
- http://www.mediawiki.org
- http://www.wiki4enterprise.org
- wiki-hilfe.de von Nuveon, http://www.nuveon.de/attach/News_blogentry_191013_1/nuveon_industrie40_summit_long.pdf