Frage zum Upgrade von Moodle

Hallo,

ich habe auf meinem externen Server ein Moodle laufen, das ich per git installiert habe. Leider wird beim Upgrade - da habe ich etwas missverstanden - durch den Befehl
git pull
nur der jeweilige branch aktualisiert.
Ich möchte aber von 3.010 auf 3.2 oder höher aktualisieren. Hat da jemand einen Tipp für mich ?

Danke -
Christoph Gü

Hi.
Hier ein Auszug aus meinem Logbuch … ohne Gewähr, dass es immernoch so läuft:


Git: Branch runterladen und checkout / Branch wechseln:

$ git clone git://git.moodle.org/moodle.git                       (1)
$ cd moodle
$ git branch -a                                                   (2)
$ git branch --track MOODLE_27_STABLE origin/MOODLE_27_STABLE      (3)
$ git checkout MOODLE_27_STABLE                                    (4)
$ chown www-data:www-data moodle -R
$ git branch -d MOODLE_25_STABLE   (alte Rep. loeschen!)

* Befehl(1) initialisiert das neue lokale Repository als einen Clone des Remote moodle.git Repository. 
  Das Remote Repository wird standardmäßig als Quelle bezeichnet. Es legt ein neues Verzeichnis moodle an, 
  in das alle Dateien heruntergeladen werden. Dieser Prozess kann eine Weile dauern, weil die gesamte Historie aller 
  Moodle-Versionen mit gezogen wird.
* Befehl (2) listet alle verfügbaren Zweige (branches) auf.
* Mit Befehl (3) legen Sie einen neuen lokalen Zweig (Branch) an, der MOODLE_24_STABLE heißt, und setzen diesen 
  Zweig so, dass er dem Remote branch MOODLE_24_STABLE vom Remote Repository folgt.
* Befehl (4) stellt auf den neuen lokalen Zweig um. 


Lieber Michael,

danke - diese Anleitung findest Du ja auch irgendwo bei linuxmuster.net.
Aber: Mich interessiert, wie man - z.B. bei Deinem beispiel - von Moodle 2.7 auf Moodle 3.1 kommen könnte - und zwar gefahrlos für die damit verknüpften Datenbanken (Logins, Kurse, Plugins,…)

Man kann zwar Dein Moodle 2.7 aus obigem beispiel auf Moodle - sagen wir - 2.7.5 upgraden (erfunden), aber mit
git pull
eben nicht auf eine höhere versionsnummer !

Gruß Christoph Gü

Also ich glaube, dass wir aneinander vorbei argumentieren??
Mit den Befehlen wechselst du ja gerade von einem alten Code-Zweig in einen neuen. (Ob man direkt riesige Sprünge von 2.x auf 3.y wagen sollte, ist dabei noch eine ganz andere Frage! Ein Backup zu haben, ist also in jedem Fall eine gute Idee…)

Wenn du danach ein git pull absetzt, wird natürlich nichts aktuelleres mehr gezogen, da du ja gerade erst alles per git geholt hast. Wenn du aber das Webfrontend aufrufst, erkennt moodle natürlich, dass es eine aktuellere Version ist und aktualisiert dann auch die Datenbank usw. War es evtl das, was dir fehlt? Oder verstehe ich deine Frage nicht?

Lieber Michael,

ja, da war bei mir tatsächlich etwas unklar: ich dachte zunächst, dass man über den repository-Mechanismus von git zu einem “gefahrlosen” und bequemen upgrade von moodle käme - so wie bei einem so genannten “rolling release” bei z.B. KAOs-Linux.
Nun sehe ich klarer: Ich muss also das aufwendigere Spiel mitmachen:

  • Sicherung der Datenbanken
  • Sicherung der alten moodle-Zweige
  • Unzippen der neuen version über die alte

usw. - so wie es bei den moodle-upgrading-docs steht - sehe ich das richtig ?

Danke und Gruß,
Christoph Gü

Ich weiß nicht genau, was in den moodle-Docs aktuell steht aber wenn du git benutzt, benötigst natürlich kein unzip mehr…

Lieber Michael,

ok, habe jetzt den neuen branch nach Deiner obigen Anleitung eingestellt - alles klar !
(Das Problem waren ein bisschen die verschiedenen “konkurrierenden” Anleitungen zum Upgrade bei den moodle-docs selbst.)
Jetzt kämpfe ich noch mit dem Umstand, dass Moodle 3.3 ein neueres php benötigt, das wiederum nur über ppa’s / neue Quellen auf meinem Ubuntu 14.04-Strato-Server zu installieren ist, was wiederum Anpassungen bei den Apache / Php-Modulen nach sich zieht usw. …:face_with_raised_eyebrow: (seufz)

Aber eine Kollegin von mir hat sich fortbilden lassen und hätte gerne für irgendwelchen office-Kram das neueste Moodle …
viele Grüße,

Christoph Gü

Ja, das stimmt leider: moodle will am liebsten immer das Neueste von Neuesten.
Ich habe bei uns auch mal ein aktuelleres PHP installiert als offiziell dabei war. Etwas umständlich aber an Ende lief es…

Hallo an alle,

nachdem es nicht ganz trivial war, mein Moodle von 3.0 auf 3.3 auf einem Ubuntu 14.04-Strato-Server upzugraden, hier eine kurze Anleitung dafür:

  1. Auf Servern, die den Befehl
    add-apt-repository
    nicht kennen, müssen folgende Pakete eingespielt werden:

apt-get install software-properties-common und python3-software-properties

Um auf das neueste Moodle upzugraden, ist PHP in der Version 7.x nötig.
Ich installierte die Version 7.1

Da Ubuntu 14.04 dies nicht mehr von Haus aus unterstützt, muss man ein Repository einbinden:

add-apt-repository ppa:ondrej/php

Für den Apache-Webserver 2.x auch noch dieses Repository:

add-apt-repository ppa:ondrej/apache2

Nun sollte man zunächst mal PHP upgraden, bevor man Moodle upgradet:

apt-get update apt-get dist-upgrade
apt-get install php7.1-mysql
apt-get install php7.1

Nun kommt das Problem auf, dass manche alten Module noch am Werkeln sind, daher:

Es werden die Module vorbereitet, aber nach wie vor arbeitet das Modul php5

a2dismod php5
a2enmod php7.1

Ab jetzt funktioniert der Apache Webserver mit PHP 7.1 !

Nun muss man einige Module aus 7.1 nachinstallieren, z.B. das Modul php7.1-ldap, php7.1-mbstring, php7.1-mcrypt, php7.1-soap, php7.1-xmlrpc.

Dies alles mit
apt-get install [Modulname]

Apache muss nach diesen Installationen immer mit
service apache2 restart

neu initialisiert werden, dmait die Module wirksam werden.

Nun muss in den Dateien unter /etc/apache2/sites-enabled in die .conf-Dateien die Abfrage der Module von mod_php5 auf mod_php7 geändert werden !!!

Das steht z.B. in meiner Moodle.conf, nachdem ich die Zeile zu Beginn von mod_php5 auf mod_php7 abgeändert habe:

<IfModule mod_php7.c>  
    	php_flag magic_quotes_gpc Off
    	php_flag magic_quotes_runtime Off
    	php_flag file_uploads On
    	php_flag short_open_tag On
    	php_flag session.auto_start Off
    	php_flag session.bug_compat_warn Off
    	php_value upload_max_filesize 64M
    	php_value post_max_size 64M
    	php_value display_errors Off
</IfModule>

Nun soltle man nach einem
service apache2 restart
seine alte, noch unveränderte Moodle-Installation als Admin betreten und hier:
http://[meine_moodle_domain.de]/admin/phpinfo.php

nachsehen, ob die .ini-Pfade, Module etc. vernünftig aussehen.

Ich musste mit
a2enmod [Modulname]

da und dort noch ein Modul zum Leben erwecken. (Hierbei handelt es sich um Module, die nicht einfach durch Installation -s.o. - “wach” werden).

Nun das Moodle in den maintenance-Mode fahren:

php /usr/share/moodle/admin/cli/maintenance.php --enable

Jetzt sichert man die Moodle-Installation in drei Schritten:

  • Erstens - die Datenbank,
  • Zweitens: Das Moodle Programmverzeichnis (bei mir /usr/share/moodle)
  • Drittens: Moodledata (bei mir (usr/share/moodledata)

Sichert man die Datenbanken mit phpmyadmin per Export, muss man einen durch die Umstellung von php5.x auf 7.x erzeugten Bug händisch ausbessern: (“cannot ‘break’ 2 levels”):
In /usr/share/phpmyadmin/export.php muss man in Zeile 864 aus dembreak 2; ein break; machen.

Alternative:
Sichern der Datenbank auch so möglich:

Betreten des Sicherungsverzeichnisses:

cd [/Pfad_zur_Sicherung/]
(z.B. /root/backup)

Dort gibt man ein:
mysqldump -u root --password=[Passwort] -C -Q -e --create-options [Datenbankname_der Moodle_Installation] >moodle-datenbank.sql

Nun sichert man den Moodle-Programmzweig mit:

tar -czf moodle.tar.gz /usr/share/moodle
und den Moodle-Data-Zweig mit
tar -czf moodledata.tar.gz /usr/share/moodledata

Die config-php sichert man nochmal gesondert:

cp -a /usr/share/moodle/config.php /root/backup/config.php

Nun ist man bereit für die Neuinstallation des neuen Moodlezweiges:

Repository holen:

cd [Pfad_zum_lokalen_Repository-Verzeichnis]

(bei mir ist das /root/gitmoodle)

Dann dort folgende Befehle ausführen:

$ git clone git://git.moodle.org/moodle.git                       
$ cd moodle
$ git branch -a                                                   
$ git branch --track MOODLE_33_STABLE origin/MOODLE_33_STABLE     
$ git checkout MOODLE_33_STABLE                                    
$ chown -R www-data:www-data moodle *

(Erklärungen hierfür bei linuxmuster.net)

Nun löscht man den alten Moodle-Zweig, bei mir unter /usr/share Moodle:

rm -R /usr/share/moodle

Man legt einen symbolischen link auf das lokale Repository an und gibt ihm dem Besitzer www-data:

cd /usr/share
ln -s /root/gitmoodle/moodle moodle
chown -h www-data:www-data moodle

Nun ist unter /usr/share/moodle der gesamte Dateivorrat - jetzt des neuen Moodles - zu finden.

Dorthinein kopiert man die originale config.php aus der alten Installation:

cp /root/backup/config.php /usr/share/moodle

Nun schaltet man den Maintenance-Modus aus und geht über einen Webbrowser auf seine Moodle-Seite: Man loggt sich dort als Admin ein und führt die Einrichtungsschritte durch.
Keine Panik, wenn Themes veraltet sind und sich erstmal nicht upgraden lassen: Einfach die Datenbak von Moodle aktualisieren, am Ende die Plugins / Themes anpassen, wenn etwas nicht mehr passt !

Viel Erfolg damit !
Gruß
Christoph Gü