{{tag> moodle}}
====== 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 [[http://www.linuxmuster.net/entwicklung:ubuntu-600|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 [[anwenderwiki:moodle:migration_1.9.x_2.4.x:erfahrungsbericht|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
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 [[https://mega.co.nz/#!4RwR0QyJ!BMFdFDblHqb0qdJLTTyGTDfaGG4WAQFknWmQ23eAgCE|php5-5.3.2.openml51.zip]]
und
[[https://mega.co.nz/#!BdxzyIpa!BuUn4263wogb48rISBdQeyMmn1wGMBXhbRbUDX6eqR4|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 ((insbesondere bei php5-xcache)).
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()**:
{{:anwenderwiki:moodle:apache-xcache1.png?600|}}
und
{{:anwenderwiki:moodle:apache-xcache2.png?600|}}
==== 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
[[https://mega.co.nz/#!xcQTiaoS!L9qanSPBJZ-_3VR3drt_PBhc9LsJwC2t-0QMbnxWqeg|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:
* [[https://mega.co.nz/#!IRYE3ZzQ!YyAqwk_XDn36QLxANZxlJgDtsKElX-766vmmnV3akXA|php-5.3.2.tar.gz]]
* [[https://mega.co.nz/#!hNRCUATZ!eL4H1knS9m511bwnF6e_JWe5yIox26E6Qyh0gEXIdnI|php5_5.3.2-1lenny1.dsc]]
* [[https://mega.co.nz/#!cQpQXa7K!MVbmxxx1JSjgz1LDhdEfBGYrorsyQ-YfgU25U5QHguY|php5_5.3.2-1lenny1.tar.gz]]
* [[https://mega.co.nz/#!BIgA2RqY!HygUS2WjqYpJIr062inrgmoJf8oEZccsff1IO4QQeu0|xcache-1.3.0-src.zip]]
==== 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.
* [[https://mega.co.nz/#!ZEp1XJbT!drUF2llJsLvyEV8ec9aywGBt2BQ3Fa3Ii7yEwC-xxgo|gcl-2.6.7.zip]]
* [[https://mega.co.nz/#!EcpCwQzI!TwFH-HCrolR4VzqxEjvWYR7HYTZAQn3sMPDqzjmxdMI|maxima-5.27.zip]]
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:
* [[https://mega.co.nz/#!kEh2ASxT!TIHEdwH1-7MLTOonwaCgRUoiLOhcSlZUBL7oq7mEC0E|gcl-src-2.6.7.zip]]
* [[https://mega.co.nz/#!5cIjnBJB!dXWz02E_spErTP2OJE9XkU_fQU4HxVoTQ15jLE88E_Q|maxima-src-5.27.zip]]