Aktualisierung von Moodle

Aus MoodleDocs
Wechseln zu:Navigation, Suche


Dieser Artikel beschreibt, wie Sie Moodle aktualisieren. Eine Übersicht über die einzelnen Schritte finden Sie unter Aktualisierung in Kürze.

Hinweis:

Die Verzeichnisstruktur der Moodle-Codedateien hat sich in Version 5.1 geändert.

1. Es wurde ein neuer Ordner public eingeführt, der alle über das Internet zugänglichen Dateien enthält. Konfigurationsdateien und andere sensible Dateien werden nun aus Sicherheitsgründen außerhalb dieses Ordners gespeichert.

2. Im Rahmen des Aktualisierungsprozesses müssen Sie Ihren Webserver neu konfigurieren, um diese Änderungen zu berücksichtigen. Siehe Abschnitt Aktualisierung - Umstrukturierung des Moodle-Code-Verzeichnisses.

Voraussetzungen prüfen

Prüfen Sie die Systemanforderungen für die aktuellste Moodle-Version 5.1 unter Block Einstellungen > Website-Administration > Server > Serverumgebung.

Die Anforderungen an die Server- und Client-Software finden Sie in den Moodle 5.1 Release Notes.

Hinweis: Beachten Sie, dass Sie nur von Moodle 4.2.3 oder neueren Versionen auf die aktuelleste Moodle-Version 5.1 aktualisieren können. Wenn Ihre Moodle-Installation älter ist, müssen Sie zuerst in einem Zwischenschritt auf von Moodle Moodle 4.2.3 aktualisieren.

Bevor Sie Ihr Produktivsystem aktualisieren

Wir empfehlen Ihnen dringend, die Aktualisierung auf einer Kopie Ihres Produktivsystems zu testen, um sicherzustellen, dass alles wie gewünscht funktioniert. Siehe Moodle-Migration.

Nutzen Sie bei Bedarf einen Aktualisierungsschlüssel für Ihre Moodle-Site.

Wichtige Daten sichern

Sie müssen drei Bereiche sichern, bevor Sie eine Aktualisierung vornehmen:

  1. Moodle Software (PHP-Skripte von Moodle)
  2. Moodle-Datenverzeichnis
  3. Moodle-Datenbank

Detaillierte Informationen dazu finden Sie im Artikel Sicherungen.

Prüfen Sie, ob es Aktualisierungen für Ihre Plugins gibt

Wenn Sie die Automatische Aktualisierung aktiviert haben, dann können Sie die installierten Plugins automatisch während der Aktualisierung von Moodle aktualisieren. Prüfen Sie auf der Seite Einstellungen > Website-Administration > Plugins > Übersicht, ob Aktualisierungen vorhanden sind.

Wenn Sie Plugins manuell aktualisieren, dann ist es ein guter Zeitpunkt zu prüfen, ob es eine aktuelle Version 5.1 für die Plugins gibt, die Sie früher auf Ihrer Moodle-Site installiert haben. Wenn das der Fall ist, laden Sie diese neuen Plugins herunter, kopieren Sie sie an die richtige Stelle im Moodle-Code-Verzeichnis (siehe Plugins installieren).

Die Aktualisierung des Plugins erfolgt dann im Verlauf der Aktualisierung von Moodle.

Wenn ein veraltetes Plugin den Abbruch der Aktualisierung verursacht, dann löschen Sie den entsprechenden Code direkt auf dem Moodle-Server, anstatt das Plugin in Moodle zu deinstallieren.

Wartungsmodus aktivieren

Bevor Sie mit der Aktualisierung beginnen, schalten Sie die Moodle-Site in den Wartungsmodus, um zu verhindern, dass sich Nutzer/innen anmelden. Danach sollten Sie abwarten, bis alle laufenden Cron-Prozesse abgeschlossen sind, bevor Sie mit der Aktualisierung fortfahren.

Umstrukturierung des Moodle-Code-Verzeichnisses

Die Verzeichnisstruktur der Moodle-Codedateien und das Sicherheitsmodell haben sich seit Version 5.1 geändert.

In früheren Versionen befand sich die gesamte Moodle-Codebasis im DocumentRoot des Webservers. Ab Moodle 5.1 soll der Ordner /public das einzige öffentlich zugängliche Verzeichnis sein.

Wichtig: Sie müssen die Konfiguration Ihres Webservers aktualisieren, damit das DocumentRoot des Webservers auf /moodle/public verweist.

Shared Hosting

Sie können die Moodle-Dateien nicht mehr einfach in Ihrem DocumentRoot-Verzeichnis des Webservers ablegen, sondern sollten stattdessen

  • entweder: das DocumentRoot-Verzeichnis in Ihrer Webserver-Konfiguration so aktualisieren, dass es auf das Verzeichnis /public von Moodle verweist
  • oder: einen Symlink zum Verzeichnis /public von Moodle verwenden
  • oder: einen standortspezifischen Alias verwenden.

Wie dies konfiguriert wird, hängt von Ihrem Hosting-Anbieter ab.

Sichern Sie unbedingt Ihr altes Moodle-Verzeichnis, bevor Sie Änderungen vornehmen.

Moodle im DocumentRoot-Verzeichnis

Wenn sich Ihr Moodle im DocumentRoot-Verzeichnis des Webservers und nicht in einem Unterordner befindet, können Sie möglicherweise den folgenden Ansatz verwenden. Dieser Ansatz gilt für Websites mit URLs wie z.B.:

Diese Anweisungen gehen davon aus, dass:

  • Ihr Benutzername moodleuser lautet
  • Ihr Home-Verzeichnis in /home/moodleuser ist
  • Ihr DocumentRoot-Verzeichnis sich in /home/moodleuser/public_html befindet
Wenn Sie Shell-Zugriff auf den Moodle-Server haben
mkdir -p ~/sites/
mv ~/public_html ~/sites/moodle
ln -s ~/sites/moodle/public ~/public_html

Wenn Sie zuvor andere Nicht-Moodle-Inhalte in Ihrem Moodle-Verzeichnis hatten, sollten Sie diese idealerweise an einen eigenen Speicherort verschieben und ebenfalls einen Symlink erstellen, zum Beispiel:

mkdir -p ~/sites/
mv ~/moodle/wordpress ~/sites/wordpress '''???CHECK???'''
ln -s ~/sites/wordpress ~/public_html/wordpress '''???CHECK???'''
Geben Sie in Ihrem Browser „www.example.com/wordpress“ ein.
Verwendung einer über das Web ausgeführten PHP-Datei

In vielen Fällen können Sie auch ohne Zugriff auf die Shell Dateien verschieben und Symlinks innerhalb Ihres Benutzerkontos erstellen.

Sie können beispielsweise eine neue Datei updatelocation.php in Ihrem DocumentRoot Verzeichnis mit folgendem Inhalt erstellen:

<?php

$publichtml = __DIR__;
$parentdir = dirname($publichtml);
$sitesdir = {$parentdir}/sites”;
$newname = {$sitesdir}/moodle”;
$target = {$newname}/public;

if (!dir_exists($sitesdir)) {
  mkdir($sitesdir);
}

rename($publichtml, $newname);
echo „Renamed {$publichtml} to {$newname}\n<br>;
symlink($target, $publichtml);
echo „Erstelle neuen Symlink, um {$target} mit {$publichtml} zu verknüpfen\n<br>;

Wenn Sie zuvor andere Nicht-Moodle-Inhalte in Ihrem Moodle-Verzeichnis hatten, sollten Sie diese idealerweise an einen eigenen Speicherort verschieben und ebenfalls mit einem Symlink verknüpfen. Nach dem Ausführen des obigen Skripts könnten Sie beispielsweise Folgendes ausführen:

<?php

rename(„sites/moodle/wordpress”, „sites/wordpress”); '''???CHECK???'''
symlink(„sites/wordpress”, „public_html/wordpress”); '''???CHECK???'''

Moodle in einem Unterverzeichnis

Wenn sich Ihre Moodle-Website nicht im DocumentRoot_Verzeichnis Ihrer Domain befindet, sondern in einem Unterverzeichnis, können Sie möglicherweise die folgende Vorgehensweise anwenden. Diese Vorgehensweise gilt für Websites mit URLs wie:

Diese Anweisungen gehen davon aus, dass:

  • Ihr Benutzername moodleuser ist
  • Ihr Home-Verzeichnis /home/moodleuser befindet
  • Ihr DocumentRoot-Verzeichnis sich in /home/moodleuser/public_html befindet
  • Ihre Moodle-Installation sich derzeit in /home/moodleuser/public_html/moodle befindet
Wenn Sie Shell-Zugriff auf den Moodle-Server haben
mkdir -p ~/sites/
mv ~/public_html/moodle ~/sites/moodle
ln -s ~/sites/moodle/public ~/public_html/moodle
Verwendung einer über das Web ausgeführten PHP-Datei

In vielen Fällen können Sie auch ohne Zugriff auf die Shell Dateien verschieben und Symlinks innerhalb Ihres Benutzerkontos erstellen.

Sie können beispielsweise eine neue Datei updatelocation.php in Ihrem DocumentRoot-Verzeichnis mit folgendem Inhalt erstellen:

<?php

$moodledir = __DIR__ . /moodle‘;
$parentdir = dirname(__DIR__);
$sitesdir = {$parentdir}/sites“;
$newname = {$sitesdir}/moodle“;
$target = {$newname}/public;

if (!dir_exists($sitesdir)) {
  mkdir($sitesdir);
}

rename($moodledir, $newname);
echo „Renamed {$moodledir} to {$newname}\n<br>;
symlink($target, $moodledir);
echo „Erstelle neuen Symlink, um {$target} mit {$moodledir} zu verknüpfen\n<br>;

Moodle als Subdomain

Viele Shared-Hosting-Plattformen ermöglichen es, das DocumentRoot-Verzeichnis für Subdomains zu ändern, jedoch nicht für die Haupt-Domain. Das heißt, Sie können Folgendes nicht ändern:

Sie können jedoch Folgendes ändern:

Um dies in cPanel zu tun, können Sie zum Tool „Domains” navigieren, um das DocumentRoot-Verzeichnis zu ändern.

  • Ihre Hauptdomain erlaubt Ihnen möglicherweise nicht, das DocumentRoot-Verzeichnis zu ändern. Klicken Sie daher auf die Schaltfläche Neue Domain erstellen.
  • Der Name Ihrer neuen Subdomain kann moodle.(Ihr Domainname) lauten (z. B. moodle.mymoodle.com.
  • Geben Sie das DocumentRoot-Verzeichnis nicht frei, sondern fügen Sie moodle/public zu dem Verzeichnis, in dem die Dateien für diese Domain gespeichert werden sollen hinzu.
  • Sehen Sie in Ihrem Dateimanager nach, dort sollten Sie moodle.(Ihr Domainname) unter Home finden. Es wird ein Verzeichnis namens moodle geben, das nur ein leeres öffentliches Verzeichnis enthält.
  • Löschen Sie die neu erstellten Unterverzeichnisse moodle und public, laden Sie den Moodle-Code hoch und entpacken Sie ihn, um sie zu ersetzen. Nun sollte sich in Ihrer Subdomain ein Ordner moodle mit Dateien und ein Unterverzeichnis public befinden.
  • Kopieren Sie Ihre alte Moodle-Konfigurationsdatei config.php in das Verzeichnis moodle in Ihrer Subdomain.
  • Ihr neues Moodle befindet sich unter moodle.mydomain.com.

Für diejenigen, die Root-Zugriff auf den Moodle-Server haben

Wenn sich das DocumentRoot-Verzeichnis Ihrer Moodle-Website unter /var/www/moodle befindet:

In Apache:

DocumentRoot /var/www/moodle/public
<Directory /var/www/moodle/public>
   AllowOverride None
   Require all granted
</Directory>

In Nginx:

root /var/www/moodle/public;

Konfigurationsdateien befinden sich normalerweise im Verzeichnis /etc/apache2/sites-available/ für Apache und /etc/nginx/sites-available/ für Nginx. Dies wäre ein guter Zeitpunkt, um auch Ihren Router zu konfigurieren, falls Sie dies noch nicht getan haben.

Speichern Sie die Änderungen und starten Sie den Webserver neu.

Routing

Ab Moodle 4.5 ist ein Router in Moodle enthalten, dessen Verwendung in kommenden Versionen zunehmen wird.

Apache

Wenn Sie Zugriff auf die Apache-Konfiguration haben, können Sie die Anweisung FallbackResource wie folgt verwenden:

<Directory „/path/to/your/site“>
    FallbackResource /r.php
</Directory>

Wenn Sie keinen Zugriff auf die Apache-Konfiguration haben, Ihre Konfiguration jedoch die Einstellung von FallbackResource in einer Override-Datei zulässt, können Sie eine .htaccess-Datei in Ihrem Moodle-Ordner public mit folgendem Inhalt erstellen: FallbackResource /r.php </syntaxhighlight>

Wenn Ihr Host die Verwendung der Anweisung FallbackResource verhindert, können Sie möglicherweise dennoch mod_rewrite verwenden. Weitere Informationen finden Sie in der Dokumentation zu OpenLiteSpeed unten.

Weitere Informationen zur Anweisung FallbackResource finden Sie in der Apache-Dokumentation.

Nginx

Der Nginx-Server unterstützt keine Konfiguration pro Verzeichnis. Alle Konfigurationen müssen in der zentralen Konfiguration angegeben werden.

Die erforderliche Konfiguration hängt von Ihrer gesamten Nginx-Konfiguration und der Integration von php-fpm ab.

try_files $uri $uri/ /r.php$is_args$args;

OpenLiteSpeed (cPanel)

Diese Konfiguration ist auch mit Apache kompatibel.

Folgendes sollte in die Datei .htaccess Ihres Moodle-Verzeichnisses /public eingefügt werden.

RewriteEngine On

# Wenn wir eine Anfrage haben, die:
# - keine Datei ist;
# - sondern ein Verzeichnis;
# - und das Verzeichnis eine index.php enthält;
# dann leiten Sie zur index.php in diesem Verzeichnis weiter.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_FILENAME}/index.php -f
RewriteRule ^(.*)$ $1/index.php [L]

# Umschreiben von / zu /index.php
RewriteRule ^$ ./index.php [L]

# Alles andere sollte zum Moodle-Router umgeleitet werden.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ r.php [L,QSA]

Neue Moodle-Version installieren

Laden Sie sich das aktuelle Moodle Paket 5.1 von http://download.moodle.org herunter.

Standardpaket verwenden

  1. Verschieben Sie Ihre alten Moodle-Softwareprogrammdateien an einen anderen Speicherort. Kopieren Sie KEINE neuen Dateien über die alten Dateien.
  2. Entpacken Sie den neuen Code, sodass sich alle neuen Moodle-Codedateien an dem Speicherort befinden, an dem sich zuvor die alten Dateien auf dem Server befanden. Moodle passt SQL und Moodle-Datenverzeichnis bei Bedarf während des Aktualisierungsprozesses an.
  3. Kopieren Sie Ihre alte Moodle-Konfigurationsdatei config.php zurück in das neue Moodle-Verzeichnis (nicht in das öffentliche Unterverzeichnis moodle/public!).

Wie oben erwähnt, sollten Sie, wenn Sie Plugins auf Ihrer Website installiert haben, diese jetzt zum neuen Code-Baum (Moodle-Verzeichnisstruktur) hinzufügen. Es ist wichtig, dass Sie überprüfen, ob Sie die richtige Version für Ihre neue Moodle-Version erhalten. Achten Sie besonders darauf, dass Sie keinen Code in der neuen Moodle-Version überschreiben und dass Sie die Plugin-Ordner im richtigen Verzeichnis ablegen (dem gleichen Verzeichnis, in dem sie sich in der aktuellen Installation befinden).

Ihr moodledata-Ordner sollte separat von Ihrem Moodle-Code-Ordner liegen und daher keine weiteren Maßnahmen erfordern. Moodle gibt eine Warnung aus, wenn er sich in einem über das Web zugänglichen Ordner befindet. Außerdem sollte der moodledata-Ordner sollte niemals im Moodle-Code-Ordner liegen.

Wenn Sie Ihre Moodle-Installation auf einen neuen Server umziehen, lesen Sie den Artikel Moodle-Migration.

Linux

Unter Linux würden diese Schritte so aussehen:

Moodle-Verzeichnis umbenennen und neuen Code entpacken:

   mv moodle moodle.backup
   tar xvzf moodle-latest-5.1.tgz

Kopieren Sie anschließend Ihre Moodle-Konfigurationsdatei config.php, alle Zusatz-Plugins und Ihre .htaccess-Datei, falls Sie eine erstellt haben (überprüfen Sie zunächst, ob die Zusatz-Plugins die richtige Version für Ihr neues Moodle sind):

cp moodle.backup/config.php moodle
cp -pr moodle.backup/theme/mytheme moodle/public/theme/mytheme
cp -pr moodle.backup/mod/mymod moodle/public/mod/mymod

Vergessen Sie nicht, moodle/config.php (und den Rest des Quellcodes) für Ihren Webserver lesbar zu machen. Aus Sicherheitsgründen sollten die Dateien für Ihren Server nicht schreibbar sein. Dies ist besonders wichtig auf einem Produktivsystem, das für das öffentliche Internet zugänglich ist.

chown -R root:root moodle (Linux Debian – oder erstellen Sie einen Nutzer speziell für Moodle. Verwenden Sie nicht den Webserver-Benutzer, z.B. www-data)
chmod -R 755 moodle

Wenn Sie cron verwenden, achten Sie darauf, dass cron.php ausführbar ist und den richtigen PHP-Befehl verwendet:

chmod 740 admin/cli/cron.php (einige Konfigurationen erfordern chmod 750 oder chmod 755)

Kopieren Sie die erste Zeile aus cron.php, falls erforderlich (wenn sie wie #!/usr/local/bin/php oder #!/usr/local/bin/php5.3 aussieht, müssen Sie <?php nicht kopieren). Für eine einfache Aktualisierung sollte es jedoch nicht notwendig sein, etwas an cron zu ändern.

Git verwenden

Sie können auch das Git verwenden, um Moodle zu aktualisieren.

Wichtig: Alle von Ihnen installierten Plugins von Drittanbietern befinden sich weiterhin an ihren ursprünglichen Speicherorten oberhalb des neuen Ordners /public. Diese müssen in ihren relativen Pfad innerhalb der neuen Ordnerstruktur /public verschoben werden, damit sie weiterhin funktionieren.

Aktualisierung von Kommandozeile

Sie können Moodle auch von der Kommandozeile aktualisieren. Diese Variante funktioniert insbesondere für große Moodle-Installationen zuverlässiger als die Aktualisierung über den Webbrowser.

Aktualisierung abschließen

Jetzt müssen Sie noch den eignetlichen Aktualisierungsprozess in Moodle anstoßen. Gehen Sie dazu auf die Seite Einstellungen > Website-Administration > Mitteilungen.

Moodle erkennt automatisch, dass eine neuere Version auf den Server hochgeladen wurde und startet die Aktualisierung der Moodle-Datenbank und des Moodle-Datenverzeichnisses. Wenn irgendetwas nicht automatisch aktualisiert werden kann, sehen Sie entsprechende Hinweise und Anleitungen, was Sie tun sollen.

Wenn alles erfolgreich und ohne Fehlermeldungen durchläuft, dann können Sie mit Ihrer neuen Moodle-Version sofort loslegen!

Hinweis: Wenn Sie mit mehreren Servern arbeiten, dann sollten Sie nach der Aktualisierung auf allen Servern den Cache löschen: Klicken Sie dazu im Block Einstellungen > Website-Administration > Entwicklung > Cache löschen.

Fatal error: Maximum execution time of 30 seconds exceeded...

Wenn Sie neben dem englischen Sprachpaket weitere Sprachpakete verwenden, dann kann dieser Fehler auftreten, weil die Aktualisierung des Sprachpakets zu lange dauert. In diesem Fall erhöhen Sie inder PHP-Konfigurationsdatei php.ini den Wert max_execution_time = 160. Dann haben die Moodle-Skripte genügend Zeit, die Sprachpakete zu aktualisieren. Alternativ können Sie Ihre Moodle-Site vor der Aktualisierung auf englisch umstellen und danach wieder auf die gewünschte Sprache zurückstellen. Siehe dieser Diskussionsbeitrag auf moodle.org: https://moodle.org/mod/forum/discuss.php?d=119598.

Mögliche Probleme in Moodle 5.1

Verbesserungen in der Aktivitätsauswahl

Die Elemente im Aktivitätsauswahl sind entsprechend ihrem Zweck in Kategorien unterteilt.

Die Einstellung activitychoosertabmode unter Website-Administration > Kurse > Aktivitätsauswahl > Einstellungen der Aktivitätsauswahl wurde entfernt, da Aktivitäten nicht mehr als Aktivität oder Material klassifiziert werden.

Um eine Aktivität in der Aktivitätsauswahl auszuwählen, müssen Sie darauf klicken und dann auf den Button Hinzufügen klicken. Alternativ können Sie auf eine Aktivität doppelklicken, um direktzur entsprechenden Konfigurationsseite zu gelangen. Bisher gelangten Sie mit einem einzigen Klick zur Konfigurationsseite; der Button Hinzufügen bietet eine verbesserte Benutzererfahrung.

Kursabschnitte-Block entfernt

Der Block Kursabschnitte ist ab Moodle 5.1 nicht mehr verfügbar, da der Kursindex entsprechende Links zu den Abschnitten enthält.

Hauptmenü-Block in Zusätzliche Aktivitäten umbenannt

Der Hauptmenü-Block wurde in Zusätzliche Aktivitäten umbenannt. Der Block kann auch in Kursen im Einzelaktivität-Format verwendet werden, um Links zu zusätzlichen Aktivitäten im Kurs anzuzeigen. Der Titel des Blocks kann bei Bedarf geändert werden.

Soziales Kursformat standardmäßig deaktiviert

Das soziale Kursformat ist in Moodle 5.1 standardmäßig unter Website-Administration > Plugins > Kursformate > Kursformate verwalten deaktiviert und wird in einer zukünftigen Moodle-Version entfernt, da die Funktionalität durch das Einzelaktivität-Format mit einem Forum als Aktivitätstyp bereitgestellt wird.

Alle Kurse, die das soziale Format verwenden, bleiben unverändert, es wird jedoch empfohlen, das Kursformat in Einzelaktivität-Format mit einem Forum als Aktivitätstyp zu ändern.

Seite „Passwort vergessen“ reCAPTCHA

Sie können sich vor automatisierten Angriffen schützen, indem Sie reCAPTCHA zur Seite Passwort vergessen unter Website-Administration > Plugins > Authentifizierung > Übersicht hinzufügen.

Einstellung für Medien-Drag-and-Drop entfernt

Drag-and-Drop für Medien ist immer aktiviert. Die Einstellung Drag&drop für Medien (dndmedia) unter Website-Administration > Plugins > Aktivitäten > Text- und Medienfeld wurde entfernt, da es keinen Grund gibt, diese Funktion zu deaktivieren.

Einstellung Maximale Anzahl von Abschnitten veraltet

Die Einstellung Maximale Anzahl von Abschnitten (maxsections) unter Website-Administration > Kurse > Standardeinstellungen > Grundeinstellungen wird in keiner Moodle-Standardfunktionalität mehr verwendet. Die Einstellung ist veraltet und wird in einer zukünftigen Moodle-Version entfernt. Trainer/innen können in ihrem Kurs beliebig viele Abschnitte hinzufügen, ohne dass es eine Begrenzung gibt.

Siehe auch die Liste unter upgrade_notes-labelled issues und ui_change-labelled issues.

Neue Fähigkeiten in Moodle 5.1

Moodle 4.3, 4.4, 4.5 and 5.0 Aktualisierungshinweise

In Abhängigkeit davon, von welcher Moodle Version aus Sie aktualisieren, beachten Sie die Abschnitte "Mögliche Probleme in Moodle X.X" in diesen MoodleDocs:

Fragen zu dieser Vorgehensweise?

Dann schreiben Sie einen Beitrag in diesem Forum auf moodle.org.

Siehe auch