Mediawiki Mirror Skript

Aus Laub-Home Wiki

Da ich mein Wiki unbedingt noch auf einem weiteren Server als Sicherheitskopie laufen haben wollte, habe ich nach ein paar Möglichkeiten gesucht dies zu machen. Das einfachste ist, einfach das komplette Mediawiki Verzeichnis auf den anderen Server zu übertragen und dannach einen aktuellen Datenbank Dump einzuspielen. Dazu dient dieses kleine Skript:
wiki-mirror.sh

#!/bin/bash
# Dieses Skript erstellt eine 1zu1 Kopie eines Mediawikis auf einem anderen System
# by A.laub andreas[-at-]laub-home.de
#Load the Pathes
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
export PATH

MYSQLDUMPUSER="wikiuser"
MYSQLDUMPPASSWORD="wikipassword"
DUMPDATABASE="wikidb"
DUMPFILE="/tmp/$DUMPDATABASE.sql.gz"
TARGETHOST="wiki2.laub-home.de"
DUMPTARGET="/tmp/$DUMPDATABASE.sql.gz"
SSHPORT="22"
WIKIFILES="/srv/httpd/vhosts/wiki.laub-home.de/*"
TARGETWIKIFILES="/srv/httpd/vhosts/wiki2.laub-home.de/"
LSETTINGS="${TARGETWIKIFILES}htdocs/LocalSettings.php"

# Erstellt den MySQL Dump
mysqldump --databases $DUMPDATABASE -u$MYSQLDUMPUSER -p$MYSQLDUMPPASSWORD | gzip > $DUMPFILE

# Kopiere MySQL Dump
scp -q -P $SSHPORT $DUMPFILE $TARGETHOST:$DUMPTARGET

# Spiele MySQL Dump ein
ssh -p $SSHPORT $TARGETHOST "gunzip < $DUMPTARGET | mysql -u$MYSQLDUMPUSER -p$MYSQLDUMPPASSWORD"

# Sync Vhost Files
rsync --rsh="ssh -p$SSHPORT" --delete -azq --progress --partial --inplace --bwlimit=50 $WIKIFILES $TARGETHOST:$TARGETWIKIFILES

# Wiki auf ReadOnly stellen:
ssh -p $SSHPORT $TARGETHOST "sed -i -e s/'^#\$wgReadOnly'/'\$wgReadOnly'/g $LSETTINGS"

# Aufraeumen:
rm -f $DUMPFILE

Voraussetzungen für das Skript:

  • ssh Zugang ohne Passwort zum entfernten Server
  • MySQL localhost Zugang mit Berechtigung zum schreiben der wiki Datenbank
  • Wiki Datenbank muss angelegt und vor dem ersten Abgleich leer sein
  • Beide Wiki-Datenbanken müssen den gleichen Namen haben
  • der gleiche Benutzer mit gleichem Passwort muss alle Rechte außer GRANT auf die Wiki Datenbank haben.
  • folgende Zeilen in der LocalSettings.php, des Hauptservers, um den Mirror in den ReadOnly Mode zu versetzten:
# ReadOnly Mode
#$wgReadOnly = "<h1><b>Ist nur der Mirror. bitte unter wiki.laub-home.de editieren</b></h1><br>";