In der paedML/openML 5.1 ist Moodle 1.9.x installiert. Dieses lässt sich nicht ohne weiteres auf Moodle 2.4.x aktualisieren, da ab Moodle 2.0 die Version 5.3.2 von PHP erforderlich ist. Außerdem verwendet linuxmuster-moodle die Bibliothek MathJax, die auf der paedML/openML ebenfalls nicht verfügbar ist. Darüber hinaus sind noch als Voraussetzung für Maxima gcl in einer neueren Version und maxima in der Version 5.27. erforderlich.
Der hier beschriebene Weg ist für Linuxmuster.net 6.0.
Es ist allerdings auch möglich, das migrierte Moodle mit einer paedML/openML 5.1 zu betreiben. Auf diese Weise betreibe ich mein migriertes Moodle, solange Linuxmuster.net noch nicht fertig ist.
Für die Migration ist eine Test-Installation von Linuxmuster.net erforderlich. Das alte Moodle wird in diese Test-Installation eingespielt.
Dann wird aus einem zusätzlich eingebundenen Repository das Migrationspaket linuxmuster-moodle-migration installiert und das Migrationsskript gestartet. Das Skript sichert das alte Moodle und macht es unter dem Sicherungsnamen verfügbar. Die Aktualisierung muss in mehreren Schritten erfolgen:
1.9.x -> 1.9.19 -> 2.2.5 -> 2.4.4
Nach der Sicherung installiert das Skript zunächst linuxmuster-moodle19, führt also eine Aktualisierung auf die letzte 1.9.x-Version aus.
Jetzt hat man Gelegenheit, alle Bestandteile, die nicht automatisch aktualisiert werden konnten, manuell vom alten Wiki in das 1.9-Wiki zu übernehmen. Das erfolgt bequem durch Aufruf beider Wikis in zwei Browserseiten.
Danach startet man das Migrationsskript erneut. Es nimmt wieder eine Sicherung vor und installiert linuxmuster-moodle22.
Wieder hat man Gelegenheit, manuelle Korrekturen vorzunehmen. Schließlich startet man das Migrationsskript ein drittes Mal und nach erneuter Sicherung wird linuxmuster-moodle-2.4.4 installiert.
Nachdem man sich wiederum vergewissert hat, dass alle Bestandteile migriert werden konnten, ist die Migration abgeschlossen.
Die Sicherungsmoodles kann man mit Hilfe des Skripts nun auch wieder entfernen.
Falls man das aktualisierte Moodle auf einem paedML/openML 5.1 System betreiben möchte, muss man schließlich noch das Moodle wieder zurück auf den alten Server transferieren und dort auch noch das von meiner Internetseite heruntergeladene PHP 5.3 installieren.
Die Test-Installation muss wie hier beschrieben durchgeführt werden.
Anschließend muss die Zusatz-Installationsquelle installiert werden, die das Migrationspaket linuxmuster-moodle-migration enthält, eingerichtet werden:
Die Repo-URL lautet: http://download.opensuse.org/repositories/home:/fschuett/xUbuntu_12.04
Folgende Datei muss erstellt werden:
/etc/apt/sources.list.d/linuxmuster-moodle.list
Inhalt:
deb http://download.opensuse.org/repositories/home:/fschuett/xUbuntu_12.04 / deb-src http://download.opensuse.org/repositories/home:/fschuett/xUbuntu_12.04 /
Hinweis: Ein Leerzeichen befindet sich vor dem letzten Schrägstrich.
Der Schlüssel muss importiert werden:
wget http://download.opensuse.org/repositories/home:/fschuett/xUbuntu_12.04/Release.key -O - | apt-key add -
Damit ist die Installationsquelle eingerichtet und das Migrationpaket wird durch folgende Befehle installiert:
aptitude update aptitude install linuxmuster-moodle-migration
Führen Sie die Befehle als root auf dem alten Server aus.
cd /usr/share tar cvzf /root/usmoodle.tar.gz moodle cd /var/lib tar cvzf /root/vlmoodle.tar.gz moodle cd /etc tar cvzf /root/emoodle.tar.gz moodle
Einpacken der Datenbank:
pg_dump -U postgres -F p -E UTF8 -f /root/dbmoodle.tar moodle gzip /root/dbmoodle.tar
Kopieren Sie die vier Dateien usmoodle.tar.gz, vlmoodle.tar.gz, emoodle.tar.gz, dbmoodle.tar.gz auf das neue System in das gleiche Verzeichnis (/root). Dann führen Sie folgende Befehle aus:
cd /usr/share tar xvzf /root/usmoodle.tar.gz cd /var/lib tar xvzf /root/vlmoodle.tar.gz cd /etc tar xvzf /root/emoodle.tar.gz cd /etc/apache2/conf.d ln -s /etc/moodle/apache.conf moodle
Lassen Sie sich den Inhalt der Datei
/etc/moodle/config.php
anzeigen und suchen Sie den Wert der Variable $CFG→dbpass. Dieses Passwort muss an Stelle von XXXXXXXX weiter unten im Befehl psql eingesetzt werden.
Falls bereits eine Datenbank moodle vorhanden ist,
psql -U postgres -l
muss diese vorher umbenannt („aus dem Weg geräumt“) werden.
psql -U postgres -qc "ALTER DATABASE moodle RENAME TO moodlealt;"
Wiederherstellen der Datenbank:
gunzip /root/dbmoodle.tar.gz createuser -U postgres -S -D -R moodle psql -U postgres -d template1 -qc "ALTER USER moodle WITH PASSWORD 'XXXXXXXX';" createdb -U postgres -O moodle -T template0 moodle psql -U postgres moodle -f /root/dbmoodle.tar
Starten Sie schließlich den Apache neu.
/etc/init.d/apache2 reload
Falls alles fehlerfrei funktioniert hat, ist das Moodle in einem Internet-Browser verfügbar.
Vorbedingung für die Migration ist, dass die alte Moodle-Installation auf dem System Linuxmuster.net 6.0 funktioniert, also über die übliche URL aufrufbar ist.
Außerdem muss das Paket linuxmuster-moodle-migration installiert sein.
Starten Sie das Skript durch:
linuxmuster-moodle-migration --migration
Ausgaben des Skripts werden zusätzlich in die Datei
/var/log/linuxmuster/linuxmuster-moodle-migration.log
protokolliert.
Anschließend ist das Moodle zur Version 1.9.19 migriert, das alte Moodle unter moodlexxx (z.B. Moodle 1.9.12 unter moodle1912) addressierbar.
Jetzt muss Moodle einmal aufgerufen werden.
Nachdem diese Aktualisierung durchgelaufen ist, ist das Moodle auf die neue Version migriert.
Starten Sie das Skript erneut durch:
linuxmuster-moodle-migration --migration
Ausgaben des Skripts werden zusätzlich in die Datei
/var/log/linuxmuster/linuxmuster-moodle-migration.log
protokolliert.
Anschließend ist das Moodle zur Version 2.2.5 migriert, das alte Moodle unter moodle1919 addressierbar.
Starten Sie das Skript durch:
linuxmuster-moodle-migration --migration
Ausgaben des Skripts werden zusätzlich in die Datei
/var/log/linuxmuster/linuxmuster-moodle-migration.log
protokolliert.
Anschließend ist das Moodle zur Version 2.4.4 migriert, das alte Moodle unter moodle225 addressierbar.
Starten Sie wieder die Datenbankmigration wie oben angegeben.
Starten Sie einen Web-Browser und übertragen Sie die Daten aller Module, die vor der Migration entfernt werden mussten, manuell in das neue Moodle.
Entfernen Sie schließlich die vielen Sicherungsmoodles durch
linuxmuster-moodle-migration --remove --version=1.9.19 linuxmuster-moodle-migration --remove --version=2.2.5
usw.
Für die Sicherungskopien wird, abhängig von der Größe Ihres Moodle, unter Umständen viel Speicherplatz benötigt. Nach jedem erfolgreichen Schritt kann eine vorherige Sicherheitskopie auch zwischendurch entfernt werden.
Schlägt ein Migrationsschritt fehl, kann auch durch
linuxmuster-moodle-migration --rollback --version=1.9.19
eine zuvor gesicherte Version wieder hergestellt werden.
Das Skript behandelt die gängigen Datenbankprobleme von Moodle automatisch. Es kann aber immer zu speziellen weiteren Problemen kommen. Sie finden unter Erfahrungsbericht eine ausführliche Beschreibung einer durchgeführten Migration mit den auftretenden Problemen.
Führen Sie die Befehle als root auf der Test-Installation aus.
cd /usr/share tar cvzf /root/usmoodleneu.tar.gz moodle cd /var/lib tar cvzf /root/vlmoodleneu.tar.gz moodle cd /etc tar cvzf /root/emoodleneu.tar.gz moodle
Einpacken der Datenbank:
pg_dump -U postgres -F p -E UTF8 -f /root/dbmoodleneu.tar moodle gzip /root/dbmoodleneu.tar
Kopieren Sie die vier Dateien usmoodleneu.tar.gz, vlmoodleneu.tar.gz, emoodleneu.tar.gz, dbmoodleneu.tar.gz auf den alten Server in das gleiche Verzeichnis (/root). Dann führen Sie folgende Befehle aus:
cd /usr/share tar xvzf /root/usmoodleneu.tar.gz cd /var/lib tar xvzf /root/vlmoodleneu.tar.gz cd /etc tar xvzf /root/emoodleneu.tar.gz
Lassen Sie sich den Inhalt der Datei
/etc/moodle/config.php
anzeigen und suchen Sie den Wert der Variable $CFG→dbpass. Dieses Passwort muss an Stelle von XXXXXXXX im folgenden Befehl psql eingesetzt werden.
Die vorhandene Datenbank moodle
psql -U postgres -l
muss umbenannt („aus dem Weg geräumt“) werden.
psql -U postgres -qc "ALTER DATABASE moodle RENAME TO moodlealt;"
Wiederherstellen der Datenbank:
gunzip /root/dbmoodleneu.tar.gz psql -U postgres -d template1 -qc "ALTER USER moodle WITH PASSWORD 'XXXXXXXX';" dropdb -U postgres moodle createdb -U postgres -O moodle -T template0 moodle psql -U postgres moodle -f /root/dbmoodleneu.tar
Starten Sie schließlich den Apache neu.
/etc/init.d/apache2 reload
Falls alles fehlerfrei funktioniert hat, ist das neue Moodle jetzt in einem Internet-Browser verfügbar. Für die paedML/openML 5.1 müssen Sie allerdings noch wie unten beschrieben PHP 5.3.2 installieren. Außerdem lauten die notwendigen CRON-Jobs in Moodle 2.x etwas anders.
In der Datei
/etc/cron.d/moodle
steht ein CRON-Job, der modifiziert werden muss.
Für Moodle 2.x muss der Inhalt dieser Datei folgendermaßen lauten:
# Regular cron jobs for the moodle package */5 * * * * www-data [ -f /usr/share/moodle/admin/cli/cron.php ] && /usr/bin/php -f /usr/share/moodle/admin/cli/cron.php > /dev/null 11 * * * * www-data [ -f /usr/share/moodle/auth/ldap/cli/sync_users.php ] && /usr/bin/php -f /usr/share/moodle/auth/ldap/cli/sync_users.php > /dev/null
Die Datei
/etc/moodle/config.php
muss mit
<?php
beginnen. Warum das so ist, weiß ich nicht. Aber die CRON-Jobs brechen mit Fehlermeldungen ab, weil anscheinend der PHP-Interpreter die Datei andernfalls nicht als PHP-Code erkennt.
Laden Sie die Dateien
php5-5.3.2.openml51.zip php5-xcache_1.3.0-7_i386.deb
herunter. Sie sind unter php5-5.3.2.openml51.zip und php5-xcache_1.3.0-7_i386.deb zu finden.
Entpacken Sie die ZIP-Datei in das gleiche Verzeichnis, in dem sich auch php-xcache_1.3.0-7_i386.deb befindet
Installieren Sie folgende Pakete mit
dpkg -i php*.deb libapache2-mod-php5_5.3.2-1lenny1_i386.deb
Damit ist die neue PHP-Version verfügbar. Anpassungen sind meiner Erinnerung nach nicht erforderlich.
Falls die Installation von xcache erfolgreich war, liefert phpinfo():
und
MathJax ist eine Bibliothek, die in Moodle verwendet wird. Auf Linuxmuster.net ist diese als Paket verfügbar. Für paedML/openML 5.x kann sie heruntergeladen und ausgepackt werden.
Vorher muss ein Link „weggeräumt“ werden.
rm -f /usr/share/moodle/lib/mathjax
Die Datei
moodle-libjs-mathjax.tar.gz
kann unter dem Link
heruntergeladen werden.
Auspacken:
mv moodle-libjs-mathjax.tar.gz /usr/share/moodle tar xvzf moodle-libjs-mathjax.tar.gz
Die Quellpakete von PHP könnte man sich ebenfalls herunterladen:
Diese Pakete müssen für linuxmuster-moodle aktualisiert werden, da die enthaltenen Versionen nicht mit neuen Moodle-Versionen kompatibel sind. Ich habe die benötigten Pakete bereitgestellt.
Nach dem Herunterladen müssen die beiden Dateien jeweils in ein Verzeichnis entpackt
mkdir ./gcl cd ./gcl unzip gcl-2.6.7.zip
und mit Auflösung von Abhängigkeiten installiert werden.
dpkg -i *.deb
bzw.
mkdir ./maxima cd ./maxima unzip maxima-5.27.zip dpkg -i *.deb
Auch hierzu können die Quellpakete heruntergeladen werden: