Update moodle über die Kommandozeile

Update moodle über die Kommandozeile

von Bernhard Weichel -
Anzahl Antworten: 9

Hallo

ich mache mich dran, unsere Moodle-Installation zu aktualisieren. In einer Spielwiese wollte ich den Prozess mal durchziehen.

Ich hatte seinerzeit den Code mit git geholt:

git clone --depth=1 -b MOODLE_28_STABLE --single-branch git://git.moodle.org/moodle.git


Nun führe ich folgende Schritte durch

git fetch origin MOODLE_33_STABLE:MOODLE_33_STABLE

git checkout MOODLE_33_STABLE

`which php56` admin/cli/upgrade.php

dann kriege ich die Meldung:

Die installierten Moodle-Dateien wurden verändert. Ihr Moodle wird

automatisch auf die Version 3.3.1+ (BUILD: 20170720) (2017051501.02)

aktualisiert. Nach der Aktualisierung können Sie nicht zu einer früheren

Version zurückkehren. Beachten Sie bitte, dass der Prozess lange dauern

könnte!


Sind Sie sicher, dass Sie die Aktualisierung ausführen wollen?

Was immer ich dann auch eingebe ("J", "Ja", "Y", "yes") es passiert nichts mehr ....

Ich habe schliesslich den maintenance-mode ausgeschaltet, und bin auf die Website gegangen. Dann hat er das Moodle aktualisiert. Bei unserer live-Instanz fürchte ich aber Schwierigkeiten, weil die für meine Begriffe schon ziemlich groß ist (das Backup von DB und Daten hat 10 GB).

Ich habe folgende Fragen:

1. ist es technisch sinnvoll gleich auf 3.3 zu gehen? 

2. ist die Vorgehensweise mit GIT korrekt/angemessen, oder sollte ich einfach das code-Verzeichnis leer machen und 

git clone --depth=1 -b MOODLE_33_STABLE --single-branch git://git.moodle.org/moodle.git

neu holen. Ich fürchte um die Größe des lokalen Git-Repositories.

3. ist es sinnvoll das upgrade in der Kommandozeile zu machen? Was muss ich dann zur Bestätigung eingeben.

4. wenn ich es im Browser mache und der Serverprozess bricht wegen Zeitüberschreitung ab, kann ich dann wieder aufsetzen, so dass ich mit der Zeit doch durch komme?

Die Fragen scheinen banal (sorry), aber via google und Forummsuche habe ich die Antworten nicht gefunden.






Mittelwert:  -
Als Antwort auf Bernhard Weichel

Re: Update moodle über die Kommandozeile

von Pia Liersch -

Hallo Bernhard,

mit dem GIT kann man so machen, aber ich würde es nicht empfehlen.

Vor allem da man gerne eigene Sachen in seinen Moodle Ordner reinpackt und dann meckert GIT.


Wir haben bei uns einen speziellen Ordner ausserhalb der Webserver Struktur, dieser wird mit GIT gepflegt und von dort per rsync auf die jeweiligen Moodle Installationen verteilt. So dass der GIT Ordner immer sauber bleibt und man kann Ihn zur Not auch immer wieder neu machen.

Die Version 3.3 ist durchaus Stable und zu empfehlen, aber ich würde immer in kleinen Schritten upgraden gehen.

2.8 -> 2.9 -> 3.0 ...


Als Antwort auf Pia Liersch

Re: Update moodle über die Kommandozeile

von Bernhard Weichel -

Vielen Dank,

ich habe das so aufgesetzt

moodle-live

   rakefile.rb - dort habe ich backup/restore tasks drin

    /moodle-data

    /moodle-code   - und nur das läuft mit git

        das einzige File das ich hier ändere ist config.php

    /install-config

         config.php   - das ist die config mit der wir arbeiten. Nach einem git pull kopiere ich die wieder nach moodle-code

Ich habe in einem Spielsystem den upgrade von 2.8 nach 3.3 gemacht, das hat gut funktioniert. Ich werde den Upgrade auch erst auf einer Testinstanz machen, die live-daten enthält.

Ich habe mich entschlossen, die neue Major-Version neu zu clonen, und nicht im GIT mit den Branches zu arbeiten.

Danach kann ich mit git pull immer aktualisieren.

Ich habe festgestellt, dass die Befehle in meinem Beitrag zwar auf 3.3 umstellen, aber keinen tracking-Branch anlegen, so dass ich nicht mit git pull aktualisieren kann. 

Hast du schlechte Erfahrungen mit einem großen Sprung? Der spart halt einiges an Zeit. Wenn man dann aber scheitert, ist das schnell wieder hin.




Als Antwort auf Bernhard Weichel

Re: Update moodle über die Kommandozeile

von Pia Liersch -

Häufig Backup vom System machen und die Gefahr ist bei einem kleinen Upgrade geringer, als wenn ich einige Major Versionen überspringe.

Gerade bei Moodle 3.2 hat sich viel getan.
Wir lassen derzeit noch 3.1 laufen, da noch ein paar Plugins für 3.2 angepasst werden müssen.

Als Antwort auf Pia Liersch

Re: Update moodle über die Kommandozeile

von Thorsten Rochelmeyer -

"Vor allem da man gerne eigene Sachen in seinen Moodle Ordner reinpackt und dann meckert GIT."

Git ist in solchen Fällen absolut kooperativ, wenn man geänderte oder zusätzliche Dateien in die Datei .git/info/exclude (im moodle-Hauptverzeichnis) einträgt. Dann werden diese einfach nicht berücksichtigt.

Auf diese Weise kann man ohne Kopieren auch seine Plugins direkt im moodle-Verzeichnis verwalten. Man kann auch problemlos die Plugins selbst wieder mittels git aktualisieren, denn "git pull" funktioniert in den bei der moodle-Aktualisierung ausgelassenen Verzeichnissen selbst wieder problemlos.

Das heißt nicht, dass der Weg mit dem separaten Verzeichnis falsch wäre, nur vielleicht einen Ticken aufwändiger zwinkernd

LG

Thorsten

Als Antwort auf Thorsten Rochelmeyer

Re: Update moodle über die Kommandozeile

von Bernhard Weichel -

Es hat auch den Vorteil, dass man mit 

git status

sofort sieht, was man selber reingepackt hat.

Der Weg mit dem separaten Verzeichnis bedeutet auch, dass man ggf. files im code rumliegen lässt die von Moodle entfernt wurden.

ich werde den aber trotzdem mal genauer anschauen, er hat ja auch vorteile, vor allem wenn man mehrere produktive installationen hat.

Als Antwort auf Thorsten Rochelmeyer

Re: Update moodle über die Kommandozeile

von Bernhard Weichel -

Ich habe nun folgenden Weg herausgefunden google und Stackoverflow ... (streng nach dem Motto, "Denn sie wissen nicht, was sie tun"):

Zunächst wollte ich den Ausgangszustand wieder herstellen:

<(20:59:18) [moodle_dev] git clone --depth=1 --single-branch -b MOODLE_28_STABLE git://git.moodle.org/moodle.git  moodle_code
Cloning into 'moodle_code'...
remote: Counting objects: 17518, done.
remote: Compressing objects: 100% (13237/13237), done.
remote: Total 17518 (delta 4684), reused 10436 (delta 2595)
Receiving objects: 100% (17518/17518), 37.12 MiB | 3.15 MiB/s, done.
Resolving deltas: 100% (4684/4684), done.
Checking connectivity... done.
Checking out files: 100% (14146/14146), done.

Dann wollte ich das GIT auf 3.3 hochziehen

(21:00:24) [moodle_dev] cd moodle_code
(21:00:29) [moodle_code] git remote set-branches --add origin MOODLE_33_STABLE
(21:00:31) [moodle_code] git fetch --depth=1
remote: Counting objects: 17487, done.
remote: Compressing objects: 100% (8328/8328), done.
remote: Total 11994 (delta 5316), reused 7057 (delta 2711)
Receiving objects: 100% (11994/11994), 15.94 MiB | 2.96 MiB/s, done.
Resolving deltas: 100% (5316/5316), completed with 2748 local objects.
From git://git.moodle.org/moodle
 * [new branch]      MOODLE_33_STABLE -> origin/MOODLE_33_STABLE
(21:01:19) [moodle_code] git checkout -b MOODLE_33_STABLE --track origin/MOODLE_33_STABLE
Checking out files: 100% (12092/12092), done.
Branch MOODLE_33_STABLE set up to track remote branch MOODLE_33_STABLE from origin.
Switched to a new branch 'MOODLE_33_STABLE'

dann kopiere ich meine alte config.php wieder rein

(21:01:30) [moodle_code] cp ../install_config/config.php .

Dann lass ich das Update-Script laufen

(21:21:39) [moodle_code] $(which php56) admin/cli/upgrade.php --non-interactive
X-Powered-By: PHP/5.6.28
Content-type: text/html; charset=UTF-8


Warning: chdir(): No such file or directory (errno 2) in /kunden/387727_70825/moodle_dev/moodle_code/lib/setup.php on line 221
-->Sprachpakete verwalten: de ++ Das Sprachpaket ‘de' wurde erfolgreich installiert. ++ -->Kernsystem ++ erfolgreich ++ Die Aktualisierung wurde erfolgreich beendet

Übungshalber versuche ich nochmal den branch zu aktualisieren.

(21:22:31) [moodle_code] 
(21:45:33) [moodle_code] git pull
Already up-to-date.
(21:45:35) [moodle_code] 

Mit diesem Verfahren kann ich mir auch anzeigen lassen, welche Files ich zusätzlich reinkopiert habe:

(21:45:35) [moodle_code] git status
On branch MOODLE_33_STABLE
Your branch is up-to-date with 'origin/MOODLE_33_STABLE'.

Untracked files:
  (use "git add ..." to include in what will be committed)

	.htaccess

nothing added to commit but untracked files present (use "git add" to track)

Die Vorgehensweise mit den Plugins verstehe ich noch nicht richtig. Diese habe ich ja (in unserer live-Instanz) nicht mit Git installiert, sondern über die Admin-Oberfläche im web browser. Daher erscheinen sie normalerweise auch im git status als unversioniert.

Als Antwort auf Bernhard Weichel

Re: Update moodle über die Kommandozeile

von Thorsten Rochelmeyer -

Mit den Plugins funktionert das praktisch genau so. Du klonst einfach die entsprechenden Verzeichnisse von git an die entsprechende Stelle im Verzeichnisbaum. Im Plugin-Repository sind die jeweiligen git-Seiten der Plugins angegeben. Manchmal muß man schauen, wo das Plugin landen soll. Das kann man aber meistens schon am Namen ablesen oder es ist selbsterklärend (Themes gehen galt nach /theme). Einige Witzbolde benennen ihr git repository anders als das Plugin, dann muss man das Verzeichnis halt umbenennen.

Dann sagt man git nochh, dass es diese Verzeichnisse beim Update des moodle code in Ruhe lassen soll (.git/info/excclude) und gut ist.

Wenn jetzt eine neue version des Plugins andteht, gehst Du ins entsprechende Verzeichnis, "git pull", Update über moodle anstoßen (Browser oder Kommandozeile) und fertig ist.

Vorteil ist, dass der Webserver im moodle-code nicht schreiben können braucht. Das ist etwas, was man aus SIcherheitsgründen eigentlich nicht haben möchte.

Wenn man Lust hat, kann man dann noch das ganze Update in ein Script schreiben.


Als Antwort auf Thorsten Rochelmeyer

Re: Update moodle über die Kommandozeile

von Bernhard Weichel -

ich sehe, der Punkt ist, das mit dem .git/info/exclude; sonst müsste man git das irgendwie als submodul beibringen.

Würde ein Eintrag in .gitignore nicht auch reichen?

Bei uns gehören alle Verzeichnisse dem User des Webservice, daher kann der praktisch immer darin schreiben, und die Aktualisierung durch Moodle ist eigentlich recht bequem.

Derzeit zeigt mir git status halt auch die später installierten Plugins an. Auch nicht so schlecht.



Als Antwort auf Bernhard Weichel

Re: Update moodle über die Kommandozeile

von Thorsten Rochelmeyer -

Das geht wahrscheinlich mit .gitignore auch irgendwie - ich weiß es nicht, ich lerne noch. Wwahrscheinlich ist es wie immer: es gibt nicht nur den einen richtigen Weg zum Ziel.

Ja, bequem ist das, direkt aus moodle heraus aktualisieren zu können, aber nicht sonderlich sicher. Die Dimension des Ärgers, den man sich einfangen kann, wenn schützenswerte Daten abhanden kommen, wird aktuell eher größer.