{{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]]