Administration über Kommandozeile
CLI-Skripte verwenden
Wenn Sie Shell-Zugriff auf Ihren Webserver haben, dann können Sie verschiedene CLI (command line interface) Skripte für die Administration von Moodle nutzen. Alle CLI-Skripte für die Administration von Moodle liegen im Verzeichnis moodle/admin/cli. Plugins stellen ihre CLI-Skripte in einem eigenen Unterverzeichnis zur Verfügung, z.B. das Synchronisierungsskript für die Einschreibung über externe Datenbank liegt im Unterverzeichnis moodle/enrol/db/cli.
Um Probleme mit der Zugriffskontrolle zu vermeiden, sollten Sie diese Skripte als Webserver-Nutzer ausführen bzw. als der Nutzer, dem der Webserver-Prozess gehört. Das ist besonders wichtig bei der Ausführung der Installations- und Aktualisierungsskripte, da diese Skripte neue Dateien im Moodle-Datenverzeichnis anlegen und der Webserver Schreibzugriff auf diese Dateien benötigt. In Linux-Distributionen heißt der Webserver-Nutzer apache
, wwwrun
, www-data
oder httpd
o.ä. Als root können Sie die Skripte wie folgt aufrufen:
$ cd /Pfad/zum/Moodle-Verzeichnis $ sudo -u apache /usr/bin/php admin/cli/somescript.php --params
Die meisten Skripte akzeptieren den üblichen Hilfe-Parameter --help (oder -h), um detaillierte Informationen anzuzeigen, z.B.:
$ sudo -u apache /usr/bin/php admin/cli/install.php --help
Aktualisierung über Kommandozeile
Die Aktualisierung von Moodle kann über Kommandozeile ausgeführt werden. Wie beim Installationsskript (siehe unten) gibt es einen interaktiven und einen nicht-interaktiven Modus. Das Skript schaltet die Moodle-Site nicht in den Wartungsmodus, das müssen Sie (vorher) selbst tun. Das Skript sichert auch keinerlei Daten (wenn Sie diesen Artikel lesen, gehen wir davon aus, dass Sie ohnehin eigene Skripte zur Sicherung der Moodle-Datenbank und des Moodle-Datenverzeichnisses haben!).
$ sudo -u apache /usr/bin/php admin/cli/upgrade.php --non-interactive
Die Aktualisierung über Kommandozeile ist ein sehr komfortabler Weg, wenn Sie den aktuellen Moodle-Code über Git beziehen. Im folgenden finden Sie die Befehlsfolge, um innerhalb von Sekunden auf die aktuellste Moodle-Version zu aktualisieren und gleichzeitig Ihre lokalen Codeanpassungen zu bewahren:
$ cd /var/www/sites/moodle/htdocs/ $ git fetch $ sudo -u apache /usr/bin/php admin/cli/maintenance.php --enable $ git merge origin/cvshead $ sudo -u apache /usr/bin/php admin/cli/upgrade.php $ sudo -u apache /usr/bin/php admin/cli/maintenance.php --disable
Installation von Kommandozeile
Moodle kann von Kommandozeile aus installiert werden. Es gibt zwei Installationsmodi: Im interaktiven Modus fragt das Skript alle Daten ab, die benötigt werden, um die Moodle-Site korrekt aufzusetzen. Im nichtn-interaktiven Modus müssen Sie alle Daten als Parameter beim Skriptaufruf angeben, dann wird die Moodle-Site ohne weitere Abfragen installiert. Die Parameter können auch beim Aufruf des Skript im interaktiven Modus angegeben werden, dann werden diese Daten als Voreinstellungen bei der Abfrage verwendet.
$ sudo -u apache /usr/bin/php admin/cli/install.php --lang=cs
Bei Bedarf kann die Installation der Datenbank übersprungen werden:
$ sudo -u apache /usr/bin/php admin/cli/install.php --skip-database
Wartungsmodus
Um die Moodle-Site über Kommandozeile in den Wartungsmodus zu schalten, können Sie das folgende CLI-Skript verwenden:
$ sudo -u apache /usr/bin/php admin/cli/maintenance.php --enable
Um den Wartungsmodus wieder auszuschalten, verwenden Sie denselben Aufruf, aber mit dem Parameter --disable.
Offline-Modus
In manchen Situationen möchten Sie Ihre Moodle-Site vielleicht in den Offline-Modus schalten, so dass sie nicht über das Internet erreichbar ist, können jedoch nicht den Webserver komplett abschalten (weil andere Webseiten oder Webapplikationen ebenfalls über den Webserver laufen). Wenn es im Hauptverzeichnis des Moodle-Datenverzeichnisses eine Datei climaintenance.html gibt, dann zeigt Moodle automatisch den Inhalt dieser Seite anstelle jeder anderen Moodle-Seite an.
$ cd /var/www/sites/moodle/moodledata/ $ echo '<h1>Entschuldigung, es laufen Wartungsarbeiten</h1>' > climaintenance.html
Sie können auch eine geeignete HTML-Seite erstellen, die Ihre Nutzer/innen darüber informiert, dass der Moodle-Server nicht erreichbar ist. Sie können diese Datei z.B. climaintenance.off nennen und im Hauptverzeichnis des Moodle-Datenverzeichnisses speichern. Bei Bedarf können Sie diese Datei dann einfach umbenennen in climaintenance.html.
Angepasste Site-Einstellungen
Während der Installation bzw. Aktualisierung über Kommandozeile setzt Moodle alle administrativen Einstellungen auf die Standardwerte. Siehe MDL-17850 für Details. Kurz gesagt: Sie müssen nur eine Datei local/defaults.php zu Ihrer Moodle-Installation hinzufügen, um eigene Konfigurationseinstellungen automatisch während des Installations- bzw. Aktualisierungsprozesses zu setzen. Das Format der Datei ist wie folgt:
<?php
$defaults['pluginname']['settingname'] = 'settingvalue'; // für Plugins
$defaults['moodle']['settingname'] = 'settingvalue'; // für Einstellungen im Kernsystem
Dieses Werte werden bei der Installation, der Aktualisierung und als Voreinstellungen auf den Moodle-Administrationsseiten verwendet.
Nutzer-Kennwort neu setzen
Wenn Sie aus Versehn Ihr Admin-Kennwort vergessen haben (oder das Kennwort für eine beliebige Person neu setzen wollen), dann können Sie das Skript reset_password.php verwenden. Das Skript setzt dann das korrekt verschlüsselte Kennwort für die Person.
$ sudo -u apache /usr/bin/php admin/cli/reset_password.php
MySQL Storage Engine Konvertierung
Wenn Sie Moodle mit einer MySQL-Datenbank betreiben und bisher standardmäßig MyISAM als Storage Engine für Ihre Datenbanktabellen verwenden, dann können Sie diese in zuverlässigere Storage Engines konvertieren, wie z.B. InnoDB (noch besser ist es, gleich auf eine PostgreSQL-Datenbank umzustellen ;-))
$ sudo -u apache /usr/bin/php admin/cli/mysql_engine.php --engine=InnoDB
InnoDB-Datenbanktabellen in Barracuda konvertieren
Wir empfehlen bei Moodle-Sites, die Datenbanktabellen im Antelope Dateiformat verwenden, die Tabellen in das Barracude Dateiformat zu konvertieren.
Der Grund besteht darin, dass Tabellen im Antelope Format nicht mehr als 10 Testspalten verwenden können. Das kann bei großen Moodle-Sites zu Problemen und folgenden Fehlermeldungen
Row size too large (>8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help.
bei der Kurswiederherstellung führen.
Barracuda ist das neueste InnoDB Dateiformat. Es unterstützt kompakte, redundante, komprimierte und dynamische Zeilenformate.
Deatillierte Informationen zu den Dateiformaten finden Sie unter MySQL InnoDB Glossar Antelope und MySQL InnoDB Glossar Barracuda.
Werkzeuge zur Konvertierung
Moodle stellte ein Konvertierungswerkzeug zur Verfügung. Um Tabelle anzuzeigen, die konvertiert werden müssen, verwenden Sie das Kommando:
$ php admin/cli/mysql_compressed_rows.php --list
Im folgenden sehen Sie eine Beispiel-Ausgabe:
mdl_data Compact (needs fixing) mdl_data_fields Compact (needs fixing) mdl_enrol_paypal Compact (needs fixing)
Um die Konvertierung zu starten, geben Sie folgenden Befehl ein:
$ php admin/cli/mysql_compressed_rows.php --fix
Wenn die Konvertierung erfolgreich war, erscheint folgende Ausgabe:
mdl_data ... Compressed mdl_data_fields ... Compressed mdl_enrol_paypal ... Compressed
Beachten Sie, dass die Befehle in Ihrem Moodle-Verzeichnis ausgeführt werden müssen. Wenn alle Tabellen konvertiert sind, erscheint die obige Warnung nicht mehr.
Konvertieren zu neuem Zeichensatz und neuer Kollation
$ php admin/cli/mysql_collation.php --collation=utf8mb4_unicode_ci
Cron von Kommandozeile ausführen
In Moodle 1.x konnten Sie das Cron-Skript admin/cron.php entweder über das Moodle-Web-Interface oder über Kommandozeile ausführen. Ab Moodle 2.0 kann über Kommandozeile nur das Skript admin/cli/cron.php ausgeführt werden.
Tasks
Tasks werden automatisch durch den Cron-Job ausgeführt. welche Tasks genau bei einem Aufruf des Cron-Skripts ausgeführt werden wird durch die Konfiguration der Tasks festgelegt.
Sie können einen einzelnen Task außer der Reihe ausführen, in dem Sie das CLI-Skript admin/tool/task/cli/schedule_task.php verwenden. Das Skript verwendet folgende Parameter:
--list
- listet alle Tasks auf. Jeder Task wird mit einem Klassennamentask
aufgelistet. Dieser Klassenname muss als Parameter angegeben werden, wenn der entsprechende Task außer der Reihe ausgeführt werden soll:--execute=<task>
- Führt den Tasktask
aus.
Hinweis: "\" Zeichen müssen mit einem vorangestellten \ gekennzeichnet werden.
Beispiel: Der Befehl
php schedule_task.php --list
liefert folgende Ausgabe:
== List of scheduled tasks (http://yourserver.com/moodle) == \enrol_imsenterprise\task\cron_task 10 * * * * * ASAP \logstore_legacy\task\cleanup_task * 5 * * * * ASAP \logstore_standard\task\cleanup_task * 4 * * * * Wednesday, November 12, 2014, 4:35 AM \mod_forum\task\cron_task * * * * * * ASAP \core\task\automated_backup_task 50 * * * * * ASAP ...
Um den ersten Task aus dieser Auflistung auszuführen, verwenden Sie folgenden Befehl:
php schedule_task.php --execute=\\enrol_imsenterprise\\task\\cron_task
Datenbank-Transfer
Für den Datenbank-Transfer kann das CLI-Skript admin/tool/dbtransfer/cli/migrate.php verwendet werden.
Cache löschen
Zum Löschen des Caches können Sie folgendes CLI-Skript verwenden:
php admin/cli/purge_caches.php
Alle Sitzungen löschen
Wenn es für administrative Zwecke erforderlich ist, können Sie alle Nutzer-Sitzungen über Kommandozeile löschen:
php admin/cli/kill_all_sessions.php
Dabei werden alle angemeldeten Nutzer/innen aus Moodle abgemeldet.
Reihenfolge der Kursmodule reparieren
In ganz seltenen Fällen (z.B. bei der Aktualisierung einer sehr alten Moodle-Version) kann es passieren, dass die Reihenfolge von Kursabschnitten und Kursmodulen durcheinander gerät. Das kann in betroffenen Kursen dazu führen, dass Fehler z.B. bei der Anzeige von Kursinhalten oder bei der Kurssicherung auftreten. Um solche Fehler zu erkenn und beheben, können Sie folgendes Skript ausführen:
php admin/cli/fix_course_sequence.php -c=* --fix
Das Skript prüft alle Kurse, listet die Fehler und die erfolgreiche Beseitigung der Fehler auf.
Verwaiste Fragenkategorien löschen
Beim Anlegen eines Tests in Moodle wird automatische eine zugehörige Fragenkategorie angelegt. Wenn der Test gelöscht wird, dann blieben vor Moodle 2.9.1 diese Fragenkategorie und alle daran enthaltenen Testfragen in der Moodle-Datenbank gespeichert. Dieses verwaisten Fragekategorien können nun mit folgendem CLI-Skript gelöscht werden:
php admin/cli/fix_orphaned_question_categories.php --fix
Suchen und ersetzen
Mit diesem Skript können Sie in der gesamten Moodle-Datenbank Texte suchen und ersetzen. Verwenden Sie dieses Skript mit Vorsicht und sichern Sie in jedem Fall vorher die Moodle-Datenbank!
php admin/tool/replace/cli/replace.php --search=//oldsitehost --replace=//newsitehost
Design CSS Cache erstellen
Wenn Moodle nicht im Design-Entwickler-Modus läuft, dann wird eine Kopie des kompilierten CSS lokal gespeichert und an den Brwoser weitergegeben, wenn eine neue Seite aufgerufen wird. Wenn es keine lokale Kopie gibt, dann wird eine Kopie erstellt, wenn eine Seite erstmals in Moodle aufgerufen wird.
Mit diesem Skript können Sie die im Cache gespeicherten CSS-Dateien für Design in Moodle vorkompilieren, so dass Nutzer/innen nicht warten müssen, dass das Design erst kompiliert, wenn eine Seite erstmals aufgerufen wird.
php admin/cli/build_theme_css.php -- themes boost