MediaWiki Test Stage Skript

Aus Laub-Home Wiki

Dieses Skript erstellt ein Abbild eines bestehenden MediaWikis als Test Stage. Eine Teststage kann nützlich sein um ggf. Extensions oder ein Update des Mediawikis zu testen. Das unten stehende Skript kopiert den kompletten vhost und die Datenbank des produktiv wikis und ändert alles nötige in der LocalSettings.php. Vor jedem Start des Skriptes wird die bestehende Test Stage gelöscht (Files wie auch die Datenbank). Um das Skript nutzen zu können müssen lediglich die Parameter angepasst und das Skript mit dem Ausführecht (chmod +x wiki-teststage.sh) versehen werden. Dann kann man es einfach starten.
wiki-teststage.sh

#!/bin/bash
# Dieses Skript erstellt eine 1zu1 Kopie eines Mediawikis als Teststage in einem anderen vHost
# 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

PRODFOLDER="/srv/httpd/vhosts/prod.domain.de"
TESTFOLDER="/srv/httpd/vhosts/test.domain.de"

MYSQLDUMPUSER="wikiuser"
MYSQLDUMPPASSWORD="wikiuserpassword"
PRODDATABASE="wikidb"
TESTDATABASE="wikitestdb"
DUMPFILE="/tmp/dbdump.sql"

TESTWIKINAME="Test Wiki"
TESTMETANAME="Test_Wiki"
TESTURL="http://twiki.domain.de"

# Zuerst den vhost Ordner kopieren
if [ -d $TESTFOLDER ]; then
        rm -rf $TESTFOLDER
        echo "$TESTFOLDER deleted"
fi
mkdir -p $TESTFOLDER
echo "$TESTFOLDER created"
cp -rp $PRODFOLDER/* $TESTFOLDER/
echo "Wiki's webfolder copied to teststage"

# LocalSettings anpassen
LOCALSETTINGS=$(find $TESTFOLDER -name LocalSettings.php)
for i in $LOCALSETTINGS; do
        sed -i -e 's/'"$PRODDATABASE"'/'"$TESTDATABASE"'/g' $i
        sed -i -e 's/'^\$wgServer'/'#\$wgServer'/g' $i
        sed -i -e 's/'^\$wgSitename'/'#\$wgSitename'/g' $i
        sed -i -e 's/'^\$wgMetaNamespace'/'#\$wgMetaNamespace'/g' $i
        echo "# Rename Wiki" >> $i
        echo "\$wgSitename = \"$TESTWIKINAME\";" >> $i
        echo "\$wgMetaNamespace = \"$TESTMETANAME\";" >> $i
        echo "\$wgServer = \"$TESTURL\";" >> $i
done
echo "LocalSettings configured"

# Erstellt den MySQL Dump
mysqldump --add-drop-database --flush-privileges --databases $PRODDATABASE -u$MYSQLDUMPUSER -p$MYSQLDUMPPASSWORD | sed -e 's/'"$PRODDATABASE"'/'"$TESTDATABASE"'/g' > $DUMPFILE
echo 'GRANT ALL PRIVILEGES ON `'$TESTDATABASE'` . * TO '"$MYSQLDUMPUSER"'@'localhost';' >> $DUMPFILE

# Spiele MySQL Dump ein
echo "Enter the MySQL root password:"
mysql -uroot -p < $DUMPFILE
echo "Productiondatabase copied into test."

# Aufraeumen:
rm -f $DUMPFILE
echo "Finish!"