Church Tools - Auto Updater



  • ChurchTools AutoUpdater

    Das hier geht an alle, die ChurchTools selbst hosten...

    Allgemein

    Michael Lux (@milux) und Ich hatten keine Lust mehr ChurchTools ständig von Hand per FTP zu aktualisieren, deshalb haben wir einen "kleinen" Auto Updater für ChurchTools 3.x entwickelt.
    Die Benutzung unseres Updaters ist denkbar einfach und sollte auch ohne Programmier-Kenntnisse nicht überfordern.

    View project on GitHub

    Funktionen

    Folgender Funktionsumfang ist in unserem Skript momentan enthalten:

    • Schutz des Skripts mit per Query-String übergebenem Passwort.
    • Verifikation, ob ein Update verfügbar ist.
    • Herunterladen der ZIP-Datei vom ChurchTools SeaFile Server
    • Entpacken der ZIP-Datei und Ersetzung der index.php und des system-Verzeichnisses (Einspielen des Updates)

    Bei Fragen stehen wir gerne zur Verfügung! :)

    Installation

    Vor dem erstmaligen Aufrufen der update.php müsst Ihr einen Hash für euer gewähltes Passwort erstellen.
    Dafür zuerst durch den Aufruf von https://churchtools_domain.xyz/createHash.php?EUER_PASSWORT einen Passwort-Hash erzeugen!
    Danach müsst ihr den dort erstellten Hash in der update.php bei define('HASH', 'PUT IN YOUR OWN HASH HERE'); eintragen.
    Wenn ihr jetzt noch bei define('SEAFILE_DIR', '/d/xyz1234567/'); den Pfad auf die Stelle anpasst, bei der ihr die ChruchTools-Updates herunter ladet, ist das Skript einsatzbereit!
    (Ihr bekommt bei Updates per E-Mail einen Link zu einer SeaFile-Seite, die i.d.R. so aussieht: https://seafile.churchtools.de/d/xyz1234567/, kopiert davon einfach den hinteren Teil!)

    Nun das Update-Skript im Root-Verzeichnis der ChurchTools Installation (neben index.php, system, files, etc.) ablegen und per Cronejob einmal am Tag (z.B. bei uns 4:00 Uhr) so aufrufen:
    https://churchtools_domain.xyz/update.php?EUER_PASSWORT

    Die meisten Hosting-Provider bieten Cronjobs für ihre Kunden an.
    Wenn ihr keine Cronjobs anlegen könnt, könnt ihr auch einen kostenlosen externen Dienst wie https://www.cron-job.org/ dafür verwenden.



  • Dieser Beitrag wurde gelöscht!


  • @nico Hallo Nico, was genau willst du uns damit sagen? Weitere Informationen wären für eine Hilfestellung unabdingbar.



  • Im Installationstext verwendet Ihr die upload.php; angelegt habt Ihr lt. GitHub aber die update.php



  • @nico Danke für den Hinweis, wurde geändert.



  • sehr schick. @dennis-eisen wir sind auch bei all-INKL. Ich habe aber den "system"-ordner als PHP-User laufen. Würde der Updater trotzdem funktionieren oder muss ich vorher wieder auf FTP-User umstellen? Wenn ich das "system" im FTP User belasse, bekomme ich immer Fehlermeldungen ohne Ende



  • Wäre es nicht sinnvoll, wenn Churchtools das gleich in ihr System mit integriert?



  • @daniel_h Also unser Skript funktioniert auch wunderbar, wenn der system Ordner dem PHP-User zugeordnet ist. Ich finde es allerdings interessant, den bei uns sind alle Ordner dem FTP-User zugeordnet und es gibt keine Probleme:
    Kannst du mir bitte die Fehlermeldungen wenn du auf FTP-User umstellst und den Inhalt deiner .htaccess als private Nachricht schicken?

    @merhard Das wäre natürlich wunderbar, aber ohne jemanden auf den Schlips treten zu wolle, dass dauert wohl noch ein wenig.
    Das wäre dann aber eher ein Beitrag für die Kategorie Feature-Wünsche... Wenn du einen erstellen solltest, würdest du dafür definitiv einen Upvote von mir bekommen!


  • ChurchTools Mitarbeiter

    Sieht super aus, unter welche Lizenz stellt Ihr das, dürften wir das direkt in CT einbauen?



  • @daniel_h sagte in Church Tools - Auto Updater:

    sehr schick. @dennis-eisen wir sind auch bei all-INKL. Ich habe aber den "system"-ordner als PHP-User laufen. Würde der Updater trotzdem funktionieren oder muss ich vorher wieder auf FTP-User umstellen? Wenn ich das "system" im FTP User belasse, bekomme ich immer Fehlermeldungen ohne Ende

    Da unser Skript rein PHP-basiert ist, müssen die Zugriffsrechte alle auf dem PHP-Nutzer liegen.
    Das ist eine Grundvoraussetzung, damit das Skript funktioniert!
    Allerdings gibt es auch eine Möglichkeit, dieses Problem mit den unterschiedlichen Usern komplett aus der Welt zu schaffen. Bei uns machen wir das seit jeher so, deswegen die verwundete Reaktion von Dennis, der dieses Problem aus der "Steinzeit" gar nicht mehr kennt.
    Wenn du statt Apache-Modul FPM verwendest, um die PHP-Skripte aufrufen zu lassen, läuft ALLES über den "FTP-User". Das kann man inzwischen sogar direkt im KAS einstellen, unter (Sub)Domain > Bearbeiten (Schaltfläche rechts in der Zeile der betreffenden (Sub)Domain) > PHP Version > auswählen "X.Y (CGI/FPM)".
    Dann einfach alle Rechte rekursiv auf den "FTP-User" übertragen, und nie wieder Kopfschmerzen mit Rechten. :wink:



  • @jmrauen
    Wir planen, das Skript unter MIT-Lizenz zu stellen, also sehr permissiv, sodass ihr es auch vermarkten könnt. ;)

    AAABER: Wie genau würdest du dieses Skript denn einbauen wollen?
    Der gruselige von Besuchern getriggerte Pseudo-Cronjob ist dafür i.m.h.o absolut nicht geeignet...


  • admin

    Und er sollte auch auf manuell gestellt werden können, da wir viel über die API machen und beim Update auf 3.1 z.B. sich ein paar Sachen geändert hatten, die dann Teile unserer HP nicht mehr richtig funktionieren haben lassen.



  • @MichaelG Bin ich offen gesagt dagegen, weil es gibt einfach Leute, die das einspielen von (v.a. sicherheitskritischen) Updates gerne bis zum Sankt-Nimmerleins-Tag verschleppen.
    Vielleicht wäre es ein guter Mittelweg, dem Admin im Falle eines Updates eine Mail zu schicken, und nach einer Übergangszeit von z.B. einer Woche ohne Rückmeldung das Update automatisch einzuspielen.

    Ich finde es auch generell sehr unsauber, dass ohne Rückwärtskompatibilität innerhalb einer Major-Version die API-Semantik geändert wird, sowas sollte nicht passieren! @jmrauen, damit meine ich euch. ;)


  • ChurchTools Mitarbeiter

    Habe nochmal darüber nachgedacht: Die Kontrolle sollte beim Kunden bleiben, wir würden nicht bei denen automatisch ohne dass sie es wünschen Updates einspielen.
    Da Ihr es so gut gelöst habt, würde ich dann von festen Integration in ChurchTools absehen. Wer es haben möchte, kann sich das dann ja einfach selbst einrichten.


  • admin

    @jmrauen Also mit einer Funktion das selbst zu Triggern fände ich das schon gut. Wie z.B. bei Wordpress. Da klick ich einmal auf und muss nicht mit FTP Client und Drag and Drop arbeiten



  • Wir haben eine neue Version unseres Auto Updaters veröffentlicht:
    https://github.com/dennis-eisen/CT_AutoUpdater

    Diese erkennt jetzt auch inkonsequente Versionnummern (z.B. 3.11b).
    Außerdem erkennen wir die Notwendigkeit eines Updates nicht mehr an der hinterlegten Versionsnummer in constants.php sondern am Filedate der constants.php. Somit sind wir nicht mehr auf eine konsequente Anpassung der Versionsnummer von Seitens der ChurchTools Entwickler angewiesen.

    @jmrauen Warum ist das aktuelle Update - 3.11b - nicht in der constants.php zu finden. Laut dieser ist immer noch die Version 3.11 installiert?


  • ChurchTools Mitarbeiter

    Guter Hinweis, werden wir nächstes Mal berücksichtigen. Bisher gab es kein Auto-Updater:)



  • Hi,

    Ich finde dieses Tool wirklich klasse, ich wollte nur fragen, ob ihr es noch ein bischen erweitern könntet:

    -> automatischen DB Dump von churchtools anlegen (@jmrauen gibt es da eine API in CT wie man den dump über dieses php skript anstossen könnte? Den dump braucht man, falls was beim update schief läuft.
    -> alle heruntergeladenen zip + dumpfiles sollen archiviert werden am server.

    manualUpdate.php
    updateNotifier.php
    -> es wäre auch cool zusätzlich zwei andere Tools für nicht so abenteuer freundliche autoupdate zu haben, wo man nur notifieziert wird als CT Admin (nicht das email dass an die bei CT registrierte person geht), falls ein update verfügbar ist. Dann rufe ich die url zu manaulUpdate.php auf, dort finde ich infos wie,

    • welches update is verfügbar
    • link zu den release notes
    • 'Perform update' button -> dann wie gehabt das autoupdate ausführen

    restorePreviousRelease.php

    • Über diesen link, könnte man ein beliebige vorher gespeicherte Version (CT_Version + dump) wieder herstellen.

    Was denkt ihr?



  • @tomzi Deinen Vorschlag zu den DB-Dumps finde ich gut. Diesen werde ich auch im eigenen Interesse zeitnah einpflegen (sollte keine große Schwierigkeit darstellen).

    Deinen zweiten Vorschlag zu den manuellen Updates finde ich an sich auch gut, leider fehlt mir für diese Umsetzung die Motivation. Von unserer Seite aus benötigen wir diese Funktionalität nicht und daher werde ich dies wohl auch nicht umsetzen.



  • Kann es sein, dass der Auto Updater nicht mehr funktioniert?
    Ich hab auch einen Fehler, an dem es vermutlich liegt. es gibt garkeine ".zip" Datei mehr in dem Verzeichnis aus dem er das update laden will. Das ist jetzt eine .tar.gz



  • @merhard sagte in Church Tools - Auto Updater:

    Kann es sein, dass der Auto Updater nicht mehr funktioniert?
    Ich hab auch einen Fehler, an dem es vermutlich liegt. es gibt garkeine ".zip" Datei mehr in dem Verzeichnis aus dem er das update laden will. Das ist jetzt eine .tar.gz

    Ja, liegt an der .tar.gz die sonst immer eine .zip war. Außerdem war bei 3.18.1 update nicht ein 'churchtools' ordner gepackt, sonder ein 'churchtools-3.18.1', was den nächsten Fehler verursachen würde.

    @jmrauen: Könnt ihr das immer als zip gepackten "churchtools" Ordner hochladen? Oder muss das script hier auf mehrere Varianten angepasst werden?

    :thorsten



  • Ab sofort gibt es eine neue Version (2.0) unseres Church Tools - Auto Updater:
    https://github.com/dennis-eisen/CT_AutoUpdater/releases/tag/2.0

    Bei Fragen oder Problemen dürft ihr euch gerne an uns wenden.


    Wir haben den Updater um folgende Funktionen erweitert:

    • implemented ".tar.gz" support
    • added push notification
    • added locking (to prevent concurrent update)


  • Das mit Pushbullet hättet ihr auch gerne erklären dürfen. Dazu steht nix in der Readme und auch hier wird es nicht erklärt.
    :) Und dann kommt da ein komischer fehler, wenn man die push.inc.php einfach mit hochlädt.



  • @merhard In der push.inc.php (Zeile: 16-23) ist alles Wissenwerte zu Pushbullet erklärt:

    Pushbullet, put in your own credentials below and set service to "true" if needed
    Our pushbullet integrations requires the pushbullet libary of ivkos:
    https://github.com/ivkos/Pushbullet-for-PHP
    Import the Pushbullet libary into the root of your webspace,
    if you want to use this service and remove the hastag from the subsequent line.

    Solltest du die Push-Benachrichtigungen nicht benötigen, musst du einfach die Datei push.inc.php nicht mit hochladen, bzw. wieder löschen. Unser Skript erkennt dies automatisch und es sollte kein Fehler ausgegeben werden. Eigentlich dürfte aber auch kein Fehler ausgegen werden, wenn du die push.inc.php trotzdem mit hochgeladen hast. Ich werde mir das anschauen.

    Danke aber trotzdem für den Hinweis, ich werde dies auch in die Readme einpflegen und noch ein wenig erweitern.

    Soweit nun alles klar?



  • Jupp, danke. Alles klar.


Anmelden zum Antworten
 

Es scheint als hättest du die Verbindung zu ChurchTools Forum verloren, bitte warte während wir versuchen sie wieder aufzubauen.