Mediawiki: Unterschied zwischen den Versionen

Aus Mikiwiki
Zur Navigation springen Zur Suche springen
 
(27 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
Die [[Wiki]]-Software <b>Mediawiki</b> (auch: MediaWiki) wurdefür die freie Online-Enzyklopädie [http://www.wikipedia.org/ Wikipedia] entwickelt. Inzwischen laufen auch die Wikipedia-Ableger [http://www.wikisource.org/ Wikisource] (freie Quellen zur Wikipedia), [http://www.wiktionary.org/ Wiktionary] (Wörterbuch), [http://www.wikiquote.org/ Wikiquote] (Zitatensammlung) und [http://www.wikibooks.org/ 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.
Die [[Wiki]]-Software <b>Mediawiki</b> (auch: MediaWiki) wird seit 2002 als Ersatz für Usemod für die freie Online-Enzyklopädie [http://www.wikipedia.org/ Wikipedia] entwickelt. Inzwischen laufen auch die Wikipedia-Ableger [http://www.wikisource.org/ Wikisource] (freie Quellen zur Wikipedia), [http://www.wiktionary.org/ Wiktionary] (Wörterbuch), [http://www.wikiquote.org/ Wikiquote] (Zitatensammlung) und [http://www.wikibooks.org/ 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 wird die relationale Datenbank [[Mysql]] genutzt. Wahlweise können inzwischen auch [[Postgresql]] und Sqllite 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.
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.
Zeile 10: Zeile 10:
* [[Mediawiki 1.13.0]]
* [[Mediawiki 1.13.0]]
* [[Mediawiki 1.13.3]]
* [[Mediawiki 1.13.3]]
* [[Mediawiki 1.14.0]]
* [[Mediawiki 1.16.0]]
* [[Mediawiki 1.19.0]]
* [[Mediawiki 1.23.0]]


== Konzepte ==
== Konzepte ==
Zeile 21: Zeile 25:
* [[/Seitenkategorie|Seitenkategorie]]
* [[/Seitenkategorie|Seitenkategorie]]
* [[/Skin|Skin]]
* [[/Skin|Skin]]
* 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:<tt> <nowiki>http://mail.wikipedia.org/mailman/listinfo/mediawiki-announce</nowiki></tt>
* 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 ==
Zeile 46: Zeile 50:


Die Konfiguration von Mediawiki findet in der Datei "LocalSettings.php" statt.
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:LocalSettings.php
* http://www.mediawiki.org/wiki/Manual:Configuration_settings
* http://www.mediawiki.org/wiki/Manual:Configuration_settings
Zeile 91: Zeile 96:
  $wgFavicon = '/favicon.ico';
  $wgFavicon = '/favicon.ico';


=== Dynamische Navigationsboxen ===
=== Ausblenden der Sidebar auf linker Seite ===
 
Folgender Code muss in der Datei  "skins/vector/vecor.js" vor dem abschliessenden "});" eingebaut werden.
* Danach kann durch Drücken der Taste "F3" der Bereich der Sidebar auf der linken Seite ausgeblendet werden.
* Ein Neuladen der Seite über die Taste "F5" zeigt wieder den normalen Zustand.
 
<pre>
        $('document').ready(function() {
                $("body").keydown(function (e) {
                        if (e.keyCode == 114) { //F3 to collapse
                          $("#mw-panel").toggle();
                          $("div#mw-panel").css('display', 'none');
                          $("#left-navigation").css('left', '1em');
                          $("#mw-head-base").css('margin-left', '1em');
                          $("div#content").css('margin-left', '1em');
                          $("div#footer").css('margin-left', '1em');
                        }
                });
        });
</pre>


* http://en.wikipedia.org/wiki/Wikipedia:NavFrame
=== Ein- und ausklappbare Tabellen ===


Ein ein- und ausklappbares Menü besteht aus folgenden Teilen.
* http://meta.wikimedia.org/wiki/Help:Collapsing
* http://en.wikipedia.org/wiki/Wikipedia:Collapsible_tables
 
Folgender Code muss in "MediaWiki:Common.js" eingebaut werden.


<pre class=wiki>
<pre class=wiki>
<div class="NavFrame">
/*<source lang="javascript">*/
   <div class="NavHead">[... Das ist der Titel ausklappbaren Inhalts ...]</div>
  <div class="NavContent">
/** Collapsible tables *********************************************************
     [... Hier der Inhalt der versteckt werden soll ...]
  *
  </div>
  *  Description: Allows tables to be collapsed, showing only the header. See
</div>
  *              [[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 );
</pre>
</pre>
=== Fehlersuche ===
* [http://www.mediawiki.org/wiki/How_to_debug_MediaWiki How to debug Mediawiki]
* [http://www.mediawiki.org/wiki/Manual:Errors_and_Symptoms Manual:Errors and symptoms]
=== Lokale Links ===
* [http://www.mediawiki.org/wiki/UNC_links UNC links]
=== Performanceverbesserung ===
* [http://www.mediawiki.org/wiki/Manual:File_cache Manual:File_cache]
=== Benutzeranpassungen ===
* http://meta.wikimedia.org/wiki/Help:User_style


=== Sicherung ===
=== Sicherung ===


Eine Sicherung von Mediawiki besteht aus folgenden Teilen:
Eine Sicherung von Mediawiki besteht aus folgenden Teilen:
* der Wiki-Inhalt aus der MySQL-Datenbank, der auf zwei Arten erstellt werden kann:
* der Wiki-Inhalt aus der [[Mysql]]-Datenbank, der auf zwei Arten erstellt werden kann:
** ein SQL-Datenbankdump mit "mysqldump"
** ein SQL-Datenbankdump mit "mysqldump"
** ein XML-Datenbankdump mit dem Skript "dumpBackup.php"
** ein XML-Datenbankdump mit dem Skript "dumpBackup.php" (dafür muss die Datei "AdminSettings.php" konfiguriert sein)
* die Bilder und sonstigen Dateien mit [[tar]]
* die Bilder und sonstigen Dateien mit [[tar]]
* Konfigurationsdateien wie "LocalSettings.php" oder "AdminSettings.php"
* Konfigurationsdateien wie "LocalSettings.php" oder "AdminSettings.php"
* Mediawiki-Programmdateien, einschliesslich aller Skins und Erweiterungen
* Mediawiki-Programmdateien, einschliesslich aller Skins und Erweiterungen


Ich nutze für die tägliche Sicherung folgendes Skript:
Ich nutze für die tägliche Sicherung das Skript "MEDIAWIKIbackup-kuhn.sh".
<pre>
 
$ <b>mkdir /home/mik/bin && cd /home/mik/bin</b>
$ <b>vi MEDIAWIKIbackup-kuhn.sh</b>
$ <b>chmod 744 MEDIAWIKIbackup-kuhn.sh</b>
 
Die crontab von Benutzer "mik" ruft das Skript wie folgt auf.
 
30 5 * * * /home/mik/bin/MEDIAWIKIbackup-kuhn.sh database /var/www/directory emailaddress
 
Das Skript "MEDIAWIKIbackup-kuhn.sh" hat folgenden Inhalt:
 
{| class=wiki width=100%
|
<source lang=bash enclose=div>
#!/bin/bash
#!/bin/bash
#
#
Zeile 132: Zeile 276:
DATABASE="$1"
DATABASE="$1"
#
#
USER=root
USER="root"
#
#
PASSWORD=
PASSWORD=
#
#
# The directory Mediawiki is installed in  
# The directory Mediawiki is installed in  
MEDIAWIKIPATH=$2
MEDIAWIKIPATH="$2"
#
#
# The directory to write the backup to
# The directory to write the backup to
BACKUPPATH=~/backup/mediawiki
BACKUPPATH="~/backup/mediawiki"
#
#
# File system where the BACKUPPATH resides (according to "df -k")
# File system where the BACKUPPATH resides (according to "df -k")
BACKUPFILESYSTEM=/dev/hdv1
BACKUPFILESYSTEM="/dev/hdv1"
#
#
# An e-mail address to notify
# An e-mail address to notify
EMAILTO=$3
EMAILTO="$3"


##### MAIN #####
##### MAIN #####


TIMESTAMP=$(date -I)
    TIMESTAMP=$(date -I)
DATABASEDUMP=${BACKUPPATH}/DBSAVE${DATABASE}-${TIMESTAMP}.sql.bz2
  DATABASEDUMP=${BACKUPPATH}/DBSAVE${DATABASE}-${TIMESTAMP}.sql.bz2
XMLFULLDUMP=${BACKUPPATH}/DBSAVE${DATABASE}-full-${TIMESTAMP}.xml.bz2
  XMLFULLDUMP=${BACKUPPATH}/DBSAVE${DATABASE}-full-${TIMESTAMP}.xml.bz2
XMLCURRENTDUMP=${BACKUPPATH}/DBSAVE${DATABASE}-current-${TIMESTAMP}.xml.bz2
XMLCURRENTDUMP=${BACKUPPATH}/DBSAVE${DATABASE}-current-${TIMESTAMP}.xml.bz2
FILEDUMP=${BACKUPPATH}/${DATABASE}-${TIMESTAMP}.files.bz2
      FILEDUMP=${BACKUPPATH}/${DATABASE}-${TIMESTAMP}.files.bz2
DISKSEIZURE=$(df -k | grep ^$BACKUPFILESYSTEM | awk '{ print $5 }' | awk 'BEGIN { FS = "" } { print $1 $2 }')
  DISKSEIZURE=$(df -k | grep ^$BACKUPFILESYSTEM | awk '{ print $5 }' | awk 'BEGIN { FS = "" } { print $1 $2 }')


if [ $DISKSEIZURE -gt 90 ]; then
if [ $DISKSEIZURE -gt 90 ]; then
Zeile 216: Zeile 360:


##### END #####
##### END #####
</pre>
</source>
|}
 
=== Unterstrich im Seitentitel ===


Die crontab ruft das Skript wie folgt auf.
Zur Anzeige des Unterstrichs (engl. underline, underscore) in einem Mediawiki-Seitentitel kann folgende Variable verwendet werden:


  30 5 * * * /home/mik/bin/MEDIAWIKIbackup-kuhn.sh database /var/www/directory emailaddress
  <nowiki>{{DISPLAYTITLE:Titel_mit_Unterstrichen}}</nowiki>


== Weblinks ==
== Weblinks ==

Aktuelle Version vom 14. August 2014, 12:23 Uhr

Die Wiki-Software Mediawiki (auch: MediaWiki) wird seit 2002 als Ersatz für Usemod fü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 wird die relationale Datenbank Mysql genutzt. Wahlweise können inzwischen auch Postgresql und Sqllite 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

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.

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.

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';

Ausblenden der Sidebar auf linker Seite

Folgender Code muss in der Datei "skins/vector/vecor.js" vor dem abschliessenden "});" eingebaut werden.

  • Danach kann durch Drücken der Taste "F3" der Bereich der Sidebar auf der linken Seite ausgeblendet werden.
  • Ein Neuladen der Seite über die Taste "F5" zeigt wieder den normalen Zustand.
        $('document').ready(function() {
                $("body").keydown(function (e) {
                        if (e.keyCode == 114) { //F3 to collapse
                          $("#mw-panel").toggle();
                          $("div#mw-panel").css('display', 'none');
                          $("#left-navigation").css('left', '1em');
                          $("#mw-head-base").css('margin-left', '1em');
                          $("div#content").css('margin-left', '1em');
                          $("div#footer").css('margin-left', '1em');
                        }
                });
        });

Ein- und ausklappbare Tabellen

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 );

Fehlersuche

Lokale Links

Performanceverbesserung

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" (dafür muss die Datei "AdminSettings.php" konfiguriert sein)
  • 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 das Skript "MEDIAWIKIbackup-kuhn.sh".

$ mkdir /home/mik/bin && cd /home/mik/bin
$ vi MEDIAWIKIbackup-kuhn.sh
$ chmod 744 MEDIAWIKIbackup-kuhn.sh

Die crontab von Benutzer "mik" ruft das Skript wie folgt auf.

30 5 * * * /home/mik/bin/MEDIAWIKIbackup-kuhn.sh database /var/www/directory emailaddress

Das Skript "MEDIAWIKIbackup-kuhn.sh" hat folgenden Inhalt:

#!/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 #####

Unterstrich im Seitentitel

Zur Anzeige des Unterstrichs (engl. underline, underscore) in einem Mediawiki-Seitentitel kann folgende Variable verwendet werden:

{{DISPLAYTITLE:Titel_mit_Unterstrichen}}

Weblinks

Folgende Weblinks behandeln Mediawiki-Themen:

Siehe die Dokumentation zur Anpassung der Benutzeroberfläche und das Benutzerhandbuch für Hilfe zur Benutzung und Konfiguration.