***Achtung! Aufgrund einer Änderung bei Moodle ist diese Anleitung nicht mehr aktuell! Die unten stehenden Kommentare berichten aber, wie es gemacht werden muss. Diese Anleitung wird in naher Zukunft aktualisiert! Auch gibt es ein Problem mit einem WordPressPlugin, sodass beim CronJob ein Formatierungsfehler ist. Hier ebenfalls die Kommentare beachten.***

Moodle ist eine Plattform für alle, die etwas mit Bildung zu tun haben. Es gibt unglaublich viele Möglichkeiten, seine Unterricht mit interaktiven Dingen wie einem Quiz oder „Erlebnisstouren“ aufzupeppen. Daher musste ich mir das natürlich auch mal anschauen! Da dies eine Anleitung ist, beachtet bitte meine Hinweise im Impressum, Abschnitt „Anleitungen“. Es wird vorausgesetzt, dass man nur ein klein wenig im Terminal navigieren kann! Auch dafür habe ich hier Informationen bereitgestellt!

Erfahrungen

Bei einer Testinstallation sind mir einige Sachen aufgefallen, die einem weniger IT-Informierten schnell die Lust am ausprobieren nehmen können, daher schreibe ich diese Anleitung. Es werden lediglich ein paar Eingriffe in die Datenbank und in einer Datei nötig sein, damit die aktuelle Version 2.5+ von Moodle auf einem Uberspace installiert werden kann.

Installation – Subdomain anlegen

Wie immer wird uns das Terminal die meiste Arbeit abnehmen, daher öffnen wir es wie immer mit STRG+T unter Linux. Nun verbinden wir uns per SSH mit unserem Uberspace-Account:

</p>
<p style="text-align: justify;">ssh bloght@cepheus.uberspace.de</p>
<p style="text-align: justify;">

Nach der Eingabe des Kennwortes sollten wir nun in unserem Stammverzeichnis landen. Damit wir nachher einen schönen Web-Aufruf haben, z.B. moodle.holgertrampe.de, legen wir eine Subdomain an, dass geht ganz einfach:

</p>
<p style="text-align: justify;">cd /var/www/virtual/$USER</p>
<p style="text-align: justify;">mkdir moodle.holgertrampe.de</p>
<p style="text-align: justify;">

Wir erstellen einen Ordner, dessen Name der Link für die Subdomain ist. Diese kann man anschließend im Browser aufrufen. Nun packen wir die aktuellste Version in diesen Ordner. Den Link erhält man hier. Klickt man auf das ZIP-Archiv, landet man in einem neuen Fenster und kann sich diesen Link dann mit STRG+C kopieren. Alternativ kann man die ZIP-File auch z.B per Filezilla oder FireFTP in das Verzeichnis laden. Mit dem Link in der Zwischenablage wieder zurück zum Terminal, mit cd in das Verzeichnis wechseln und über wget das Archiv auf den Server laden (kleiner Tipp: Daten aus der Zwischenablage werden mit STRG+SHIFT+V in das Terminal eingefügt):

</p>
<p style="text-align: justify;">cd moodle.holgertrampe.de</p>
<p style="text-align: justify;">wget http://sourceforge.net/projects/moodle/files/Moodle/stable25/moodle-latest-25.zip/download?use_mirror=optimate</p>
<p style="text-align: justify;">

Nun das Archiv mit unzip entpacken:

</p>
<p style="text-align: justify;">unzip moodle-latest-25.zip</p>
<p style="text-align: justify;">

Das dauert einen Moment und wir können die Datenbank in der Zwischenzeit vorbereiten.

Datenbank einrichten

Öffne im Browser die phpMyAdmin-Oberfläche, dass ist PMA + der Realm eures Uberspaces (z.B. pma.cepheus.uberspace.de). Einloggen und auf „Datenbanken“ klicken. Hier eine Datenbank anlegen mit eurem Uberspace-Kürzel und einem Namen, z.B. moodle. Bei mir heißt die Datenbank bloght_moodle. Nun zurück zum Terminal.

Dateien verschieben

Damit der geplante Subdomain-Aufruf klappt, wollen wir zuerst alle Daten aus dem Verzeichnis, welches durch das entpacken des Archives entstanden ist, in das Wurzelverzeichnis der Subdomain verschieben. Anschließend löschen wir das ZIP-Archiv, leeren den Ordner und setzen die richtigen Schreibverzeichnisse:

</p>
<p style="text-align: justify;">cd moodle/</p>
<p style="text-align: justify;">mv * ../</p>
<p style="text-align: justify;">cd ../</p>
<p style="text-align: justify;">rm -r moodle/</p>
<p style="text-align: justify;">chmod -R 0755 *</p>
<p style="text-align: justify;">

Der letzte Vorgang kann einen Moment dauern, denn es sind einige Dateien zu verändern.

Verzeichnis für die Moodle-Daten erstellen

Moodle kann Bilder und Daten speichern, welche natürlich auf dem Server landen. Dafür benötigt es ein freies Verzeichnis, welches volle Lese/Schreibrecht hat. Dieses Verzeichnis wird jedoch nicht in den vom Internet her zugänglichen Bereich erstellt, da das gefährlich ist. Es muss eine Ebene höher erstellt werden. Dazu wechseln wir in unser Wurzelverzeichnis, welches von außen nicht zugreifbar ist und erstellen einen Ordner für moodle inkl. der korrekten Rechte:

</p>
<p style="text-align: justify;">cd /var/www/virtual/$USER</p>
<p style="text-align: justify;">mkdir moodledata</p>
<p style="text-align: justify;">chmod -R 0777 moodledata/</p>
<p style="text-align: justify;">

Wichtige Dateiänderung

Während meiner Testinstallation hatte ich häufig einen Fehler mit folgendem Code: dmlwriteexception

Nach einer sehr langen Suche habe ich eine Lösung gefunden, dich ich angepasst habe und daher wie folgt funktioniert. Zunächst wechseln wir im Terminal in das korrekte Verzeichnis, in dem sich die Datei befindet, welche wir verändern müssen:

</p>
<p style="text-align: justify;">cd moodle.holgertrampe.de/lib/dml</p>
<p style="text-align: justify;">

Mit dem Nano-Editor die Datei mysqli_native_moodle_database.php im Terminal öffnen und per Bild-Taste abwärts ganz nach unten springen. Hier findet sich fast ganz unten die Funktion „begin_transaction“ und in ihr eine Variable $sql. Hier ändern wir die Wörter READ COMMITTED um in REPEATABLE READ. Mit STRG+X und einmal ENTER wird die Änderung gespeichert.

Cronjob anlegen

Moodle benötigt eine Einstellung, dass bestimmte Skripte zu bestimmten Zeit ablaufen. Dies ist auf Linux-System mit einem Cronjob leicht umsetzbar, wie hier nachzulesen ist. Leider ist auf Uberspace eine Einstellung in der Cron-Datei nötig, damit alles funktioniert. Dazu öffnen wir auf dem Server mit dem Befehl

crontab -e

die Cronjob-Einstellungen und erstellen einen neuen. Im folgenden ist ein Beispielskript gezeigt, welches alle 30 Minuten ausgeführt wird (der Zeitraum ist realtiv egal, alle 30 Minuten sollte ausreichen!):

PATH=/package/host/localhost/php-5/bin:/bin:/usr/bin
PHPRC=/home/USER/etc</p>
<p style="text-align: justify;">*/30 * * * * php /var/www/virtual/bloght/lernportal.holgertrampe.de/admin/cli/cron.php &gt;/var/www/virtual/bloght/moodledata/

Wenn man diesen Code in die Cron-Datei übernimmt, und USER mit seinem Usernamen ersetzt und den Pfad zu Moodle anpasst, sollte der Cronjob einwandfrei arbeiten. Wenn nicht, erhält man eine Email mit der Fehlermeldung – Klasse gelöst von Uberspace! Der zweite Teil der langen Zeile sorgt im Übrigen dafür, dass der User nicht jedesmal eine Mail mit den Informationen erhält, die der Cronjob erstellt.

Abschluss

Und das wars auch schon. Nun das Terminal zu und auf die eingerichtet Subdomain gehen. Der weitere Installationsprozess ist selbst erklärend. Wichtig ist, dass man seine korrekten Datenbankdaten eingibt und dem Prozess Zeit gibt, denn das erstellen der Tabellen und abrufen der Plugin-Daten dauert eine ganze Weile! Es kann vorkommen, dass eine Meldung im Browser erscheint, die einen Aktualisierungsprozess aufzeigt. Hier heißt warten, warten, warten – das Fenster offen lassen und alle paar Minuten mit F5 aktualisieren. Ist der Prozess abgeschlossen, wird der Administrator-Nutzer eingerichtet und man kann loslegen!

Ergänzende Informationen

Hier ein paar Links und Anleitungen, um aus dem zugegeben etwas unschönen Moodle-Standard-Theme eine hübsche Website zu zaubern und Lernmaterial zum Umgang mit Moodle:

Nun wünsche ich viel Spaß mit Moodle und freue mich über Kommentare, Verbesserungsvorschläge und Tipps!

13 Gedanken zu „Moodle auf Uberspace installieren

  • Pingback: Moodle auf Uberspace installieren » Holger Trampe

  • 27. Dezember 2016 um 09:00
    Permalink

    Hallo Holger,
    ich bin über das uberspace Wiki auf die Anleitung gestoßen. Vielen Dank dafür schon mal! Ich probiere gerade moodle 3.2 zu installieren und erhalte direkt nach Eingabe der Datenbank Credentials und der Annahme der Lizenz diese Fehlermeldung:

    „Error reading from database

    More information about this error

    It is usually not possible to recover from errors triggered during installation, you may need to create a new database or use a different database prefix if you want to retry the installation.“

    Der More Information Link führt zu: https://docs.moodle.org/32/en/error/moodle/dmlreadexception

    Ich hatte mich schon gefreut, dass der von dir vorgeschlagene Edit Abhilfe schaffen würde. Hat er aber leider nicht.

    Dein Beitrag ist jetzt schon über 3 Jahre alt. Hat sich inzwischen etwas bei moodle verändert, so dass ein anderes Vorgehen nötig ist?

    Gruß
    Marcus

    Antworten
    • 27. Dezember 2016 um 09:19
      Permalink

      Hi Marcus,

      Soweit ich weiß hat sich nichts geändert. Hast du beim Datenbanknamen deine Uberspace-Benutzernamen vorangestellt? Und was du auch versuchen kannst ist ein Prefix ohne Sonderzeichen zu nehmen. Viel Erfolg!

      Antworten
  • 1. Februar 2017 um 23:20
    Permalink

    Ich habe den gleichen Fehler wie Marcus. Komme an dem Punkt auch nicht weiter.
    Muss man irgendwelche Sachen zu php hinzufügen bzw. irgendwas noch anpassen?
    Wäre super falls jemand Bescheid weiß, weil ich denke das Problem werden alle haben die auf ein frisches Uberspace ein moodle packen wollen.
    vg umut

    Antworten
    • 2. Februar 2017 um 11:38
      Permalink

      Hi Umut,
      ich habe auch gerade mal versucht, Moodle 3.2 zu installieren und erhalte den gleichen Fehler – auch nach ein wenig durchstöbern der neuen Installationsroutine kann ich nichts finden. Es werden keine Tabellen in der angegebenen Datenbank erstellt, obwohl das Login und die config.php ohne Fehler ablaufen und erstellt werden. Leider kann ich auch nichts in der PHP-Errorlogfile finden. Schreib doch mal direkt die Jungs und Mädels von Uberspace an – vielleicht haben die noch eine Idee. Ansonsten direkt an Moodle wenden. Sorry!

      Antworten
      • 4. Februar 2017 um 01:12
        Permalink

        Hi Holger,

        hab’s inzwischen hinbekommen mithilfe von Matthias von Uberspace. Man muss eine MariaDB anlegen und diese als Datenbank nutzen.

        Jedoch habe ich nun das Problem, dass der cronjob ständig Fehler ausgibt.
        /bin/sh: gt: command not found
        /bin/sh: /var/www/virtual/cdi/moodledata/: is a directory

        Mein cronjob sieht folgendermaßen aus:

        PATH=/package/host/localhost/php-5/bin:/bin:/usr/bin
        PHPRC=/home/cdi/etc
        */30 * * * * php /var/www/virtual/USER/moodle.USER.markab.uberspace.de/admin/cli/cron.php >/var/www/virtual/USER/moodledata/

        Hast du ne Idee was daran falsch ist?

        lg umut

        Antworten
      • 4. Februar 2017 um 02:04
        Permalink

        Ok also ich denke den Fehler für die Mails hab ich gefunden. In deinem Codeschnipsel für den cronjob, kann man nicht sehen, dass “ > “ eigentlich “ > “ bedeuten soll. Irgendwie wird es nicht umformatiert. Darüber hinaus muss die Ausgabe laut der moodle Anleitung:
        https://docs.moodle.org/32/de/Cron-Job
        nicht in den moodledata Ordner erfolgen, sondern in /dev/null

        vg umut

        Antworten
  • 5. Februar 2017 um 20:16
    Permalink

    Danke für diese Anleitung und Kommentare.

    Ich würde mich freuen, wenn Umuts Änderungen als Update oben eingebaut werden könnten und nebenbei die Formatierungsfehler verbessert werden (HTML wird in Quellcode Fragmenten angezeigt). Ich habe nämlich erst einmal ins Schwarze geguckt und bin erst durch die Kommentare auf den richtigen Weg gekommen.

    Infos zur Einrichtung der MariaDB: https://wiki.uberspace.de/database:mysql#mariadb_100

    Mein CronJob liefert jedoch noch Fehler:
    PATH=/package/host/localhost/php-5/bin:/bin:/usr/bin
    PHPRC=/home/$USER/etc
    */30 * * * * php /var/www/virtual/$USER/$MOODLESUBDOMAIN/admin/cli/cron.php >/dev/null

    Fehler:
    „PHP Warning: require(/var/www/virtual/$USER/$MOODLESUBDOMAIN/admin/cli/../../config.php): failed to open stream: No such file or directory in /var/www/virtual/$USER/$MOODLESUBDOMAIN/admin/cli/cron.php on line 33
    PHP Fatal error: require(): Failed opening required ‚/var/www/virtual/$USER/$MOODLESUBDOMAIN/admin/cli/../../config.php‘ (include_path=‘.:/package/host/localhost/php-5.6.21/lib/php‘) in /var/www/virtual/$USER/$MOODLESUBDOMAIN/admin/cli/cron.php on line 33“

    Installation:
    Während des grafischen Installationsprozesses: „An internal server error occurred. Please try again later.“ -> Seite neu laden!

    Antworten
  • 5. Februar 2017 um 21:42
    Permalink

    Update: Der Cronjob Fehler ist jetzt verschwunden.

    Antworten
    • 6. Februar 2017 um 10:08
      Permalink

      Hi Adrian,
      danke für deine Infos – das wird sicher anderen auch helfen. Und ich werde natürlich die Anleitung aktualisieren, sobald ich dafür ausreichend Zeit habe. Solange habe ich oben einen Platzhalter eingefügt.

      Antworten
  • 13. Februar 2017 um 21:33
    Permalink

    Hallo!

    Vielen Dank für die tolle Anleitung. Leider funktioniert bei mir etwas bei der Installation nicht. Ich habe eine DAtenbank via mariadb angelegt und die Daten soweit bekannt (Datenbankname steht nicht in der mariadb.cnf) eingetragen .
    Danach erhalte ich folgenden Fehler:
    Fehler beim Lesen der Datenbank
    Fehler in der Kodierung gefunden, den nur ein Programmierer korrigieren kann: block_manager has not yet loaded the blocks, to it is too soon to request the information you asked for.

    Könnt ihr mir weiterhelfen?

    Danke!!

    Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.