Veröffentlicht am 07.03.2014 von Oliver Haase-Lobinger: MODX Revolution Updates vereinfachen

MODX Revolution Updates lassen sich auf vielen UNIX-/Linux-Systemen mit PHP-Skripten über den Webserver durchführen. Diese führen im Prinzip genau die Schritte aus, die man auch bei einem manuellen Update durchführen würde – nur schneller.

Grundvorraussetzung für die Einsetzbarkeit aller PHP-Skripte auf dieser Seite ist, dass PHP auf der Shell des Webservers Befehle ausführen darf. Lässt dies der Hoster nicht zu, dann ist die Nummer an dieser Stelle für euch vorbei. Auf dem eigenen Server geht natürlich alles.

Netter Nebeneffekt der hier vorgestellten Update-Skripte: Sie funktioniert auch für die Erst-Installation. Auf diese Weise ist MODX sehr schnell auf einem „leeren“ Webserver installiert.

ACHTUNG: Die hier vorgestellten Skripte sind „sehr roh“, d.h. der Umgang mit ihnen sollte mit Bedacht erfolgen und ist „auf eigene Gefahr“! Es gibt z.B. keinerlei Sicherung gegen unbefugten Zugriff dritter. Auch sollten die ersten Test nicht an einem wichtigen Live-Projekt durchgeführt werden. Nach der Verwendung sollten die Skripte auf dem Server „unschädlich” gemacht werden, d.h. am Besten gelöscht werden. Nicht das mir da nachher einer angerannt kommt und heult! ;-)

Die Basis-Variante

Die simpelste Methode des Updates ohne Backup(!) sieht so aus:

<?php
if ( !shell_exec("type type")) { echo "Weak your PHP powers are, Luke."; die; }
exec('wget -O latest.zip http://modx.com/download/latest;');
exec('unzip latest.zip; rm latest.zip;');
exec('cd modx-*; cp -r ./* ../; cd ..; rm -R modx-*;');
exec('chmod 660 ./core/config/config.inc.php;');
header('location: setup/');
?>
  1. START
  2. Testen, ob Shell-Befehle über PHP ausgeführt werden können
  3. Aktuelles MODX Revolution Version herunterladen
  4. Auspacken und ZIP löschen
  5. Files an die richtige Stelle verschieben und „Aufräumen“
  6. Config-Datei schreibbar machen
  7. Setup-Seite aufrufen
  8. STOP
Gespeichert wird das Skript auf der gleichen Ebene wie das "core"-Verzeichnis von MODX. Der Names des Skripts ist frei wählbar, z.B. "modx-update.php". Gestartet wird der Prozesse dann über den Webbrowser, also beispielseise durch "http://www.meinen-domain.de/modx-update.php".

Der Download (wget) und das Auspacken (unzip) nehmen die meiste Zeit in Anspruch. Je nach System und Anbindung dauert das 10-20 Sekunden. Danach erfolgt der Sprung auf die Setup-Seite von MODX.

Ein Backup kann nicht schaden

Ein Backup des File-Systems und der MySQL-Datenbank ist nie verkehrt. Auch zwischendurch. Das erledigt das folgende Skript automatisch. Es muss wiederum auf derselben Ebene wie das "core"-Verzeichnis liegen und kann z.B. "modx-backup.php" heißen:

<?php
if ( !shell_exec("type type")) { echo "Weak your PHP powers are, Luke."; die; }
$dir = "../backup"; /* Verzeichnis außerhalb des Webroot */
$configFile = "./core/config/config.inc.php";
if (file_exists($configFile)) {
    include($configFile);
    $date = date("Ymd-His");
    $targetSql = "$dir/{$dbase}_{$date}_mysql.sql";
    $targetTar = "$dir/{$dbase}_{$date}_files.tar";
    system("mkdir $dir");
    system("mysqldump --host=$database_server --user=$database_user --password=$database_password --databases $dbase --no-create-db --default-character-set=utf8 --result-file={$targetSql}");
    system("tar cf {$targetTar} ./");
    echo "<p>Backup done.<p>";
}
echo "<p>Now you can <a href='modx-update.php'>update/install MODX</a>.";
?>

Gespeichert werden die Backups eine Ebene oberhalb des Skriptes, also in "../backup". Das MySQL -Backup ist meist schnell fertiggestellt. Beim Backup der Dateien kann es jedoch schonmal etwas länger zugehen, auch wenn die Daten nicht komprimiert, sondern nur zusammengefasst werden. Wer ungedultig ist kann die Erstellung der TAR-Datei über einen ftp-Client mitverfolgen.

Die Deluxe-Variante

Die Deluxe-Variante ist noch bei uns (Oliver Haase-Lobinger und Jens Wolff) in Arbeit. Darin gibt's dann die Zusammenlegung aller Einzelfunktionen in ein gemeinsames Skript, mehr Sicherheit, mehr Komfort und auch was „für's Auge“. Aber: Gedulden Du Dich noch musst, junger Skywalker.

Fragen?

Wenn Du Fragen hast oder Vorschläge zur Verbesserung schreib in die Kommentare!



Kommentare (1)

  1. Jens

    Jens globe 08.03.2014 22:23

    Vielen Dank für den Ansatz Oliver und Jens! Ich habs heute bei dem Sicherheits-Update auf die 2.2.13 Variante gleich mal ausprobiert und an die Serverbediungen von All-Inkl.com angepasst. Das Script hab ich hier mal veröffentlicht: https://github.com/jenswittmann/modx-update

lockedDieser Artikel ist schon älter, daher wurde die Kommentarfunktion deaktiviert.