Benutzer-Werkzeuge

Webseiten-Werkzeuge


 [[anwenderwiki:moodle:migration_1.9.x_2.4.x]] 

Moodle von 1.9.x zu 2.4.x migrieren

Migrieren Sie nicht auf Moodle 2.5.x, falls Sie die paedML/openML 5.1 weiterhin verwenden. Moodle 2.5.x verwendet PHP 5.3.3. Dafür ist kein Paket vorhanden. Die höchste für die paedML/openML 5.1 unterstützte Moodle-Version ist Moodle 2.4.x.

Vorbemerkungen

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.

Überblick

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.

Test-Installation von Linuxmuster.net 6.0

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

Übertragung des alten Moodle auf die Test-Installation

Führen Sie die Befehle als root auf dem alten Server aus.

Einpacken auf dem alten Server

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:

Auspacken auf der Test-Installation

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.

Eventuell vorhandene Datenbank aus dem Weg räumen

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

Erzeugen der Datenbank auf der Test-Installation

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.

Durchführung der Migration

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.

1.9.x -> 1.9.19

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.

  • Moodle meldet sich und sagt, es kann auf die neue Version 1.9.19 aktualisiert werden.
  • Moodle testet, ob die Betriebsvoraussetzungen (PHP-Version, usw.) gegeben sind.
  • Moodle überprüft, ob die Plugin-Versionen mit der neuen Moodle-Version kompatibel sind und zeigt unten auf der Seite einen Knopf zum Aktualisieren, falls das der Fall ist.
  • Moodle aktualisiert mit umfangreichen Meldungen in einem langen Prozess die Datenbank. Schlägt ein Schritt fehl, gibt es einen „Trace“ zur Fehlermeldung und die Aktualisierung setzt beim nächsten Aufruf wieder dort ein.

Nachdem diese Aktualisierung durchgelaufen ist, ist das Moodle auf die neue Version migriert.

1.9.19 -> 2.2.5

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.

2.2.5 -> 2.4.4

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.

Nacharbeiten

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.

Hinweise

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.

Übertragung des migrierten Moodle zurück auf die alte paedML/openML 5.x

Führen Sie die Befehle als root auf der Test-Installation aus.

Einpacken auf der Test-Installation

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:

Auspacken auf dem alten Server

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.

Wegräumen der bisherigen Datenbank

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

Erzeugen der neuen Datenbank

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.

Bei Problemen können Sie das alte Moodle aus den zu Beginn erstellten Sicherungsdateien wieder herstellen. Gehen Sie dabei genauso vor, wie gerade beschrieben und verwenden Sie die Dateien ohne den Namensbestandteil neu.

CRON-Jobs anpassen

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

config korrigieren

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.

Installation von PHP 5.3.2 und MathJax (paedML/openML 5.x)

PHP

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

  • Das Paket libapache2-mod-php5filter darf nicht mit installiert werden. Es ist eine Alternative zum richtigen Modul.
  • Bei den php-Paketen müssen existierende Konfigurationsdateien durch die neuen überschrieben werden, da dort Pfade zu Bibliotheken mit abgelegt sind 1).

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

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

moodle-libjs-mathjax.tar.gz

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:

gcl und maxima

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:

1)
insbesondere bei php5-xcache
 [[anwenderwiki:moodle:migration_1.9.x_2.4.x]] anwenderwiki/moodle/migration_1.9.x_2.4.x.txt · Zuletzt geändert: 2013/06/16 20:09 von 127.0.0.1