====== Migration von Moodle auf Version 2 ====== Die hier beschriebene Vorgehensweise setzt einiges Wissen über den Umgang mit einem Linux-Terminal und SQL-Datenbanken voraus. Fehler können verheerende Folgen haben. ===== Vorbemerkungen ===== Wir haben bei uns an der Schule bisher das Moodle-Paket vom Musterlösungsserver installiert. Zwischendurch haben wir noch das Wiki-Modul auf eine neuere Version aktualisiert. Damit liegt eine problematische Installation vor. Besonders das Wiki-Modul hat einiges an Kopfzerbrechen bereitet. Ich habe die [[anwenderwiki:webapps:moodle:moodle_sicherunskopie_erstellen|Datenbank gesichert]], die Migration durchgeführt und bin im Falle von Fehlermeldungen wieder zum Ausgangspunkt zurückgekehrt, habe neu migriert... So bin ich schließlich zu einer fehlerfreien Migration gekommen. ===== Aktualisierung von Moodle 1.9.12 -> 1.9.19===== [[:moodle_sicherungskopie_erstellen|Sichern]] Sie zunächst die alte Moodle-Installation. Die Aktualisierung erfolgt in 3 Schritten, nämlich zunächst auf die letzte Moodle 1.9.x (also 1.9.19), dann auf Moodle 2.2(genau 2.2.5), dann auf Moodle 2.3 (genauer 2.3.2). Alle diese Versionen kann man sich als tgz-Paket bei [[http://www.moodle.org|Moodle]] herunterladen. Es ist sinnvoll, vorher alle Erweiterungen zu entfernen, die nicht (mehr) für Moodle 2.3 verfügbar sind, alle anderen Erweiterungen müssen versionsweise mitgezogen werden. Im Zweifelsfall können Sie auf Moodle nach den Plugins suchen, um zu sehen, welche noch vorhanden sind. Moodle zeigt vor einer Aktualisierung der Datenbank genau an, welche Module aktualisiert werden, welche zum Kernsystem gehören und welche nicht vorhanden sind. ==== Datenbankprobleme 1.9.12 -> 1.9.19 ==== Es muss einfach die Datei moodle-1.9.19.tgz in das Verzeichnis /usr/share/moodle ausgepackt werden und anschließend muss man sich als wwwadmin anmelden. Das Update läuft problemlos durch. Abschließend müssen die Vorbereitungen für die Migration nach 2.2.5 durchgeführt werden. ===== Aktualisierung von Moodle 1.9.19 -> 2.2.5 ===== ==== Datenbankprobleme 1.9.19 -> 2.2.5 ==== Korrigieren von Datenbankfehlern. Im folgenden finden Sie die Reparatur-SQL-Befehle. Sie müssen z.B. bei [[anwenderwiki:webapps:moodle:moodle_psql_benutzen|psql]] eingegeben werden. * In **mdl_user** hat **lastip** Nullwerte, die durch '0.0.0.0' ersetzt werden müssen. Die Abfrage lautet:UPDATE mdl_user SET lastip='0.0.0.0' WHERE lastip IS NULL; * Ebenfalls hat das Feld **city** Nullwerte:UPDATE mdl_user SET city='Hildesheim' WHERE city IS NULL; * In **mdl_resource** hat das Feld **reference** Nullwerte:UPDATE mdl_resource SET reference=0 WHERE reference IS NULL; ==== problematische Module ==== Die unter Ausnahmen gelisteten Plugins müssen vor dem Upgrade deinstalliert werden, also * stack * exercise * lams * webquest * exabis_eportfolio * admin_alert * wiki_* * mindmap * mrbs **Achtung: Nach der Deinstallation müssen die entsprechenden Unterverzeichnisse gelöscht werden, sonst installieren sich die Module wieder.** === Ausführliches === Das Block-Modul **stack** wird nicht mit aktualisiert, da es eine komplett neue Version davon gibt, die erst im Anschluss installiert werden sollte. Das Block-Modul **book** ist für 2.2 nicht vorhanden und gehört bei 2.3 automatisch zum Kern von Moodle. Die Module **exercise, lams, webquest** sind nicht auffindbar. Die Blöcke **admin_alert, stack, book, exabis_eportfolio, wiki_* ** müssen gelöscht werden. Der Block **exabis_eportfolio** wurde in **exabis_exaport** umbenannt. Der Block **mindmap** erzeugt Aktualisierungsprobleme, muss daher zunächst gelöscht werden. Das Modul **mrbs** lässt sich nicht übernehmen. ==== Eventuell zusätzliche Module ==== Zunächst muss moodle-2.2.5.tgz heruntergeladen und in ein **neu erstelltes** Verzeichnis /usr/share/moodle ausgepackt werden. Die Datei **config.php** wird aus der alten Installation in das neue Verzeichnis kopiert. Alle zusätzlich installierten Plugins müssen jetzt von Moodle heruntergeladen und in das neue Moodle-Verzeichnis kopiert werden, also alle Einträge mit dem Eintrag **Missing from disk**. Es handelt sich (bei mir) um die Module * hotpot * journal * mindmap und um die Blöcke * quickmail * mrbs * exabis_exaport Der Ordner //lang// muss ein Link auf /var/lib/moodle/lang sein. **Hinweis: Die Datei config.php muss unter /usr/share/moodle sein und auf /etc/moodle verlinkt sein, andersherum((so war es bisher)) funktioniert Moodle nicht.** Ich habe den einen beispielhaften Dateiinhalt [[:#config_php|unten angehängt]]. Beim Aufrufen der Moodle-Seite wird jetzt auf 2.2.5 aktualisiert. ===== Aktualisierung von Moodle 2.2.5 -> 2.3.2 ===== ==== Datenbankprobleme von 2.2.5 auf 2.3.2 ==== Wieder müssen einzelne Fehler in der Datenbank korrigiert werden. * In **mdl_user** darf das Feld **picture** nicht null sein. UPDATE mdl_user SET picture=0 WHERE picture IS NULL; * Kontrollieren Sie, ob der Filter 1 wirklich der mit //dynalink.php//((aus dem Gedächtnis)) ist, indem Sie select * from mdl_filter_active; eingeben und die **id** kontrollieren. In **mdl_filter_active** muss der Filter 1 entfernt werden DELETE FROM mdl_filter_active WHERE id=1; ===== Module ===== Ich hatte einige zusätzliche Module installiert, deren Probleme ich [[moodle2_zusaetzliche_module|hier]] beschreibe. ==== enrol openlml ==== Das Modul kann nun bequem von Moodle [[http://www.moodle.org]] heruntergeladen und installiert werden. Die deutsche Übersetzung befindet sich im Sprachpaket. * __Website-Administration->Lokales->Stadt/Ort__: Hildesheim * __Website-Administration->Lokales->Zeitzonen aktualisieren__ * __Website-Administration->Lokales->Zeitzone__: Deutschland/Berlin einstellen ===== config.php ===== passwordsaltmain = ...; $CFG->dbtype = 'pgsql'; $CFG->dblibrary = 'native'; $CFG->dbhost = 'localhost'; $CFG->dbname = 'moodle'; $CFG->dbuser = 'moodle'; $CFG->dbpass = ...; $CFG->prefix = 'mdl_'; $CFG->dboptions = array( 'dbpersist' => false, 'dbsocket' => false, 'dbport' => '', ); $CFG->wwwroot = ... $CFG->dirroot = '/usr/share/moodle'; $CFG->dataroot = '/var/lib/moodle'; $CFG->directorypermissions = 0750; $CFG->admin = 'admin'; $CFG->maxbytes = ... $CFG->respectsessionsettings = true; require_once(dirname(__FILE__) . '/lib/setup.php'); // Do not edit // There is no php closing tag in this, // it is intentional because it prevents trailing whitespace problems!