Mediawiki: Unterschied zwischen den Versionen
Michi (Diskussion | Beiträge) |
Michi (Diskussion | Beiträge) |
||
Zeile 22: | Zeile 22: | ||
* [[/Skin|Skin]] | * [[/Skin|Skin]] | ||
* [[/Vorlage|Vorlage]] | * [[/Vorlage|Vorlage]] | ||
* Sicherheit: Um sicherheitstechnisch auf dem neuesten Stand zu bleiben, sollte sich der Benutzer "Sysop" bei Wikipedia.org in die entsprechende Mailingliste eintragen: | * Sicherheit: Um sicherheitstechnisch auf dem neuesten Stand zu bleiben, sollte sich der Benutzer "Sysop" bei Wikipedia.org in die entsprechende Mailingliste eintragen: http://mail.wikipedia.org/mailman/listinfo/mediawiki-announce | ||
== Installation == | == Installation == |
Version vom 2. März 2009, 16:55 Uhr
Die Wiki-Software Mediawiki (auch: MediaWiki) wurdefür die freie Online-Enzyklopädie Wikipedia entwickelt. Inzwischen laufen auch die Wikipedia-Ableger Wikisource (freie Quellen zur Wikipedia), Wiktionary (Wörterbuch), Wikiquote (Zitatensammlung) und Wikibooks (Sachbücher) sowie eine Vielzahl anderer Projekte im Internet oder in Intranets mit dieser Software. Sie ist unter der GPL lizenziert und in der Programmiersprache PHP geschrieben. Zum Speichern der Inhalte nutzt Mediawiki die relationale Datenbank Mysql. Wahlweise kann seit Version 1.5 auch Postgresql als Datenbankserver verwendet werden.
Zur Installation dient ein kleines PHP-Skript. Im Verzeichnis "maintenance/archives" finden sich SQL-Skripte zum Anlegen der Tabellen, Indizes und Benutzer. Nach Anpassung der Datei "LocalSettings.php" müssen alle PHP-Dateien (auch die in den Unterverzeichnissen) in das gewünschte Serververzeichnis kopiert werden. Der Aufruf der Datei "wiki.phtml" im Browser startet das Wiki, wobei "phtml" als PHP-Endung in der Apache-Konfiguration eingetragen sein muss.
Produkte
Ich liste hier nur die von mir selber verwendeten Versionen.
Konzepte
- Benutzerführung
- Benutzertyp
- Bilder
- Erweiterung
- Inhaltsverzeichnis
- Namensraum
- Seitenkategorie
- Skin
- Vorlage
- Sicherheit: Um sicherheitstechnisch auf dem neuesten Stand zu bleiben, sollte sich der Benutzer "Sysop" bei Wikipedia.org in die entsprechende Mailingliste eintragen: http://mail.wikipedia.org/mailman/listinfo/mediawiki-announce
Installation
Das Installationsskript legt drei MySQL-Benutzer an und setzt deren Rechte in der Datenbank.
- Der Benutzer "$wgDBuser" führt alle normalen Datenbankoperationen durch
- Der SQL-Benutzer "$wgDBsqluser" hat nur Lesezugriff und wird für die Spezialseite verwendet, auf welcher der Systemverwalter SQL-Abfragen ausführen kann. Dammit können z. B. neue Benutzer gefunden und begrüsst werden.
- Der Benutzer "$wgDBadminuser" und sein Passwort werden zusätzlich in der Datei "AdminSettings.php" eingetragen. Dieser Benutzer mit Schreibrecht auf die Wiki-Datenbank wird bei der Installation und von den Wartungsskripten verwendet.
Das Installationsskript (früher "install.php") fragt u. a. nach dem MySQL-Root-Passwort und legt die Datenbank, Tabellen und MySQL-Benutzer an. Zuletzt wird angeboten, zwei Wiki-Benutzerkonten (Sysop, Developer) anzulegen. Die Konfiguration des Webservers beschränkt sich darauf, die Dateiendung ".phtml" als PHP-Erweiterung einzutragen.
AddType application/x-httpd-php .php .phtml
Im bei der Installation erzeugten Verzeichnis "upload", in dem Mediawiki hochgeladene Dateien speichert, sollte die Ausführung von PHP und die Darstellung von HTML verboten sein:
<Directory "/path/to/upload/directory"> AllowOverride None AddType text/plain .html .htm .shtml php_admin_flag engine off </Directory>
Konfiguration
Die Konfiguration von Mediawiki findet in der Datei "LocalSettings.php" statt.
- http://www.mediawiki.org/wiki/Manual:LocalSettings.php
- http://www.mediawiki.org/wiki/Manual:Configuration_settings
Grundkonfiguration | |
---|---|
$IP | Lokaler Pfad, auf dem Rechner, in den das Wiki kopiert werden soll, z. B. "/srv/www/htdocs" |
$wgServer | Teil der Rechneradresse vor dem ersten Schrägstrich, z. B. "http://www.meinwiki.ch/" |
$wgScriptPath | Unterverzeichnis mit den PHP-Dateien, z. B. "wiki"; diese Variable wird leergelassen (""), wenn diese im Hauptverzeichnis liegen. |
$wgEmergencyContact | E-Mail-Adresse des Systemverwalters, die bei Problemen angezeigt wird. |
$wgDBserver | Name der Mysql-Datenbank. |
$wgDBuser $wgDBpassword |
Mysql-Benutzer für den normalen Datenbankzugriff. |
$wgDBsqluser $wgDBsqlpassword |
Mysql-Benutzer für SQL-Abfragen über den Webbrowser, hat nur Leserechte. |
$wgLanguageCode | Zwei-Buchstaben-Code der verwendeten Sprache, z. B. "de" für Deutsch. |
- Logo
- Aktivierung des Dateihochladens
- Kleingeschriebene Links
- Zugriffsrechte
- Benutzerrechte (Sysop und Bureaucrat)
- Suche nach Wörtern mit weniger als 4 Buchstaben
- Entfernen von Reitern für nicht angemeldete Benutzer
- Entfernen von Boxen für nicht angemeldete Benutzer
- Aktivierung von Easytimeline
- Textformatierung
- Zurücksetzen der Seitenzähler
Für ein schnelleres Laden der Inhalte sowie weniger Bandbreitenverbrauch können häufig geladene Dateien wie "main.css" oder "wikibits.js" von überflüssigen Kommentaren und Leerzeichen befreit werden.
FAQ
Änderung des Icons im Webbrowser
Das sogenannte Favicon im Webbrowser links vom URL kann in der Datei "DefaultSettings.php" mit folgender Variable bestimmt werden. Im Beispiel befindet sich die Datei "favicon.ico" im Apache-Wurzelverzeichnis.
$wgFavicon = '/favicon.ico';
Ein- und ausklappbare Tabellen
- http://meta.wikimedia.org/wiki/Help:Collapsing
- http://en.wikipedia.org/wiki/Wikipedia:Collapsible_tables
Folgender Code muss in "MediaWiki:Common.js" eingebaut werden.
/*<source lang="javascript">*/ /** Collapsible tables ********************************************************* * * Description: Allows tables to be collapsed, showing only the header. See * [[Wikipedia:NavFrame]]. * Maintainer on Wikipedia: [[User:R. Koot]] */ var autoCollapse = 2; var collapseCaption = "hide"; var expandCaption = "show"; function hasClass( element, className ) { var Classes = element.className.split( " " ); for ( var i = 0; i < Classes.length; i++ ) { if ( Classes[i] == className ) { return ( true ); } } return ( false ); } function collapseTable( tableIndex ) { var Button = document.getElementById( "collapseButton" + tableIndex ); var Table = document.getElementById( "collapsibleTable" + tableIndex ); if ( !Table || !Button ) { return false; } var Rows = Table.getElementsByTagName( "tr" ); if ( Button.firstChild.data == collapseCaption ) { for ( var i = 1; i < Rows.length; i++ ) { Rows[i].style.display = "none"; } Button.firstChild.data = expandCaption; } else { for ( var i = 1; i < Rows.length; i++ ) { Rows[i].style.display = Rows[0].style.display; } Button.firstChild.data = collapseCaption; } } function createCollapseButtons() { var tableIndex = 0; var NavigationBoxes = new Object(); var Tables = document.getElementsByTagName( "table" ); for ( var i = 0; i < Tables.length; i++ ) { if ( hasClass( Tables[i], "collapsible" ) ) { NavigationBoxes[ tableIndex ] = Tables[i]; Tables[i].setAttribute( "id", "collapsibleTable" + tableIndex ); var Button = document.createElement( "span" ); var ButtonLink = document.createElement( "a" ); var ButtonText = document.createTextNode( collapseCaption ); Button.style.styleFloat = "right"; Button.style.cssFloat = "right"; Button.style.fontWeight = "normal"; Button.style.textAlign = "right"; Button.style.width = "6em"; ButtonLink.setAttribute( "id", "collapseButton" + tableIndex ); ButtonLink.setAttribute( "href", "javascript:collapseTable(" + tableIndex + ");" ); ButtonLink.appendChild( ButtonText ); Button.appendChild( document.createTextNode( "[" ) ); Button.appendChild( ButtonLink ); Button.appendChild( document.createTextNode( "]" ) ); var Header = Tables[i].getElementsByTagName( "tr" )[0].getElementsByTagName( "th" )[0]; /* only add button and increment count if there is a header row to work with */ if (Header) { Header.insertBefore( Button, Header.childNodes[0] ); tableIndex++; } } } for ( var i = 0; i < tableIndex; i++ ) { if ( hasClass( NavigationBoxes[i], "collapsed" ) || ( tableIndex >= autoCollapse && hasClass( NavigationBoxes[i], "autocollapse" ) ) ) { collapseTable( i ); } } } addOnloadHook( createCollapseButtons );
Benutzeranpassungen
Sicherung
Eine Sicherung von Mediawiki besteht aus folgenden Teilen:
- der Wiki-Inhalt aus der MySQL-Datenbank, der auf zwei Arten erstellt werden kann:
- ein SQL-Datenbankdump mit "mysqldump"
- ein XML-Datenbankdump mit dem Skript "dumpBackup.php"
- die Bilder und sonstigen Dateien mit tar
- Konfigurationsdateien wie "LocalSettings.php" oder "AdminSettings.php"
- Mediawiki-Programmdateien, einschliesslich aller Skins und Erweiterungen
Ich nutze für die tägliche Sicherung folgendes Skript:
#!/bin/bash # # Name MEDIAWIKIbackup-kuhn.sh # Author Michael Kuhn # Date 28 December 2008 # Description Basic backup script for a Mediawiki installation # set -x ##### CONFIGURATION ##### # The database the wiki stores data in DATABASE="$1" # USER=root # PASSWORD= # # The directory Mediawiki is installed in MEDIAWIKIPATH=$2 # # The directory to write the backup to BACKUPPATH=~/backup/mediawiki # # File system where the BACKUPPATH resides (according to "df -k") BACKUPFILESYSTEM=/dev/hdv1 # # An e-mail address to notify EMAILTO=$3 ##### MAIN ##### TIMESTAMP=$(date -I) DATABASEDUMP=${BACKUPPATH}/DBSAVE${DATABASE}-${TIMESTAMP}.sql.bz2 XMLFULLDUMP=${BACKUPPATH}/DBSAVE${DATABASE}-full-${TIMESTAMP}.xml.bz2 XMLCURRENTDUMP=${BACKUPPATH}/DBSAVE${DATABASE}-current-${TIMESTAMP}.xml.bz2 FILEDUMP=${BACKUPPATH}/${DATABASE}-${TIMESTAMP}.files.bz2 DISKSEIZURE=$(df -k | grep ^$BACKUPFILESYSTEM | awk '{ print $5 }' | awk 'BEGIN { FS = "" } { print $1 $2 }') if [ $DISKSEIZURE -gt 90 ]; then ( printf "To: ${EMAILTO}\n" ; printf "Subject: ALARM!!! $(uname -n) ($1) "; printf "${DISKSEIZURE}%% Disk nearly full!!! " printf "(hosttime $(date -I))\n"; printf "\n" ) | /usr/sbin/sendmail -f ${EMAILTO} -t else echo echo "Mediawiki backup" echo " Database : ${DATABASE}" echo " Directory: ${MEDIAWIKIPATH}" echo " Backup to: ${BACKUPPATH}" echo echo "Creating database dump ${DATABASEDUMP}..." /usr/bin/mysqldump -u ${USER} --password=${PASSWORD} --quick ${DATABASE} |\ bzip2 -c > ${DATABASEDUMP} || exit $? if [ $? = 0 ] then ( printf "To: ${EMAILTO}\n" ; printf "Subject: SUCCESS: $(uname -n) "; printf "$(df -k | grep ${BACKUPFILESYSTEM} | awk '{print $5}')% "; printf "dump ${DATABASE} (hosttime $(date -I))\n"; printf "\n" ) | /usr/sbin/sendmail -f ${EMAILTO} -t elif [ $? != 0 ] then ( printf "To: ${EMAILTO}\n" ; printf "Subject: ALARM!!! $(uname -n) "; printf "Creating dump ${DATABASEDUMP} NOT successful! "; printf "(hosttime $(date -I))\n"; printf "\n" ) | /usr/sbin/sendmail -f ${EMAILTO} -t fi echo echo "Creating XML full dump ${XMLFULLDUMP}..." cd ${MEDIAWIKIPATH}/maintenance php -d error_reporting=E_ERROR dumpBackup.php --full | \ bzip2 -c > ${XMLFULLDUMP} || exit $? echo echo "Creating XML current dump ${XMLCURRENTDUMP}..." cd ${MEDIAWIKIPATH}/maintenance php -d error_reporting=E_ERROR dumpBackup.php --current | \ bzip2 -c > ${XMLCURRENTDUMP} || exit $? echo echo "Creating file archive ${FILEDUMP}..." cd "${MEDIAWIKIPATH}" tar --exclude .svn -zcf ${FILEDUMP} . || exit $? echo echo "Done!" echo echo "Files to copy to a safe place:" echo "- ${DATABASEDUMP}" echo "- ${XMLFULLDUMP}" echo "- ${XMLCURRENTDUMP}" echo "- ${FILEDUMP}" fi ##### END #####
Die crontab ruft das Skript wie folgt auf.
30 5 * * * /home/mik/bin/MEDIAWIKIbackup-kuhn.sh database /var/www/directory emailaddress
Weblinks
Folgende Weblinks behandeln Mediawiki-Themen:
- Mediawiki (Mediawiki.org)
- How to become a MediaWiki hacker
- Manual:Navigation bar
- Mediawiki Help:FAQ which contains
- How do I add extra namespaces?
- Initial user was not created by installer
- How do I hide the main page title?
- How do I add/remove tabs in general?
- How can I force users to preview before they save?
- How do I reset a password?
- Sites using Mediawiki
- Wikimedia Meta-Wiki
Siehe die Dokumentation zur Anpassung der Benutzeroberfläche und das Benutzerhandbuch für Hilfe zur Benutzung und Konfiguration.