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 derupdate.php
beidefine('HASH', 'PUT IN YOUR OWN HASH HERE');
eintragen.
Wenn ihr jetzt noch beidefine('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_PASSWORTDie 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! -
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 EndeDa 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. -
@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... -
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.
-
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. -
@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_AutoUpdaterDiese erkennt jetzt auch inkonsequente Versionnummern (z.B. 3.11b).
Außerdem erkennen wir die Notwendigkeit eines Updates nicht mehr an der hinterlegten Versionsnummer inconstants.php
sondern am Filedate derconstants.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? -
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