Frage zum Upgrade von Moodle

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ü