|
@@ -25,11 +25,12 @@ Er ersetzt die früheren Komponenten `includes/backup.php`, `admin/updater.php`,
|
|
|
| `manage-client/config.sample.php` | Vorlage dafür |
|
|
| `manage-client/config.sample.php` | Vorlage dafür |
|
|
|
| `admin/manage.php` | Adminseite „Update & Backup“ (prüft den Login, bindet dann das Panel ein) |
|
|
| `admin/manage.php` | Adminseite „Update & Backup“ (prüft den Login, bindet dann das Panel ein) |
|
|
|
| `includes/after-update.php` | Post-Update-Hook (`psaAfterUpdate`) |
|
|
| `includes/after-update.php` | Post-Update-Hook (`psaAfterUpdate`) |
|
|
|
|
|
+| `includes/manage-activity.php` | Cron-Ersatz: Backup und Statusmeldung durch Adminaktivität |
|
|
|
| `migrations/` | einmalige Migrationsskripte, die mit einem Release ausgeliefert werden |
|
|
| `migrations/` | einmalige Migrationsskripte, die mit einem Release ausgeliefert werden |
|
|
|
| `scripts/create-release-zip.sh` | baut das Release-ZIP |
|
|
| `scripts/create-release-zip.sh` | baut das Release-ZIP |
|
|
|
|
|
|
|
|
Laufzeitdaten liegen unter `data/manage/` (`backups/`, `updates/`, `work/`,
|
|
Laufzeitdaten liegen unter `data/manage/` (`backups/`, `updates/`, `work/`,
|
|
|
-`migrations.json`, `manage-client.log`) und sind über die `.htaccess` im
|
|
|
|
|
|
|
+`migrations.json`, `manage-client.log`, `activity.json`) und sind über die `.htaccess` im
|
|
|
Projektwurzelverzeichnis nicht über das Web erreichbar.
|
|
Projektwurzelverzeichnis nicht über das Web erreichbar.
|
|
|
|
|
|
|
|
## Konfiguration (`manage-client/config.php`)
|
|
## Konfiguration (`manage-client/config.php`)
|
|
@@ -66,14 +67,42 @@ mehr.
|
|
|
offene Migrationen und verlinkt auf die Vollansicht.
|
|
offene Migrationen und verlinkt auf die Vollansicht.
|
|
|
- **Update & Backup** (`admin/manage.php`) bietet: Backup erstellen, Update
|
|
- **Update & Backup** (`admin/manage.php`) bietet: Backup erstellen, Update
|
|
|
ausrollen, Migrationen nachholen, Status melden, lokale Backups herunterladen.
|
|
ausrollen, Migrationen nachholen, Status melden, lokale Backups herunterladen.
|
|
|
-- Das Dashboard (`admin/index.php`) ruft `manageBackupCreateAutomaticIfDue()`
|
|
|
|
|
- auf: ist seit dem letzten automatischen Backup das Intervall vergangen, wird
|
|
|
|
|
- eines erstellt, sonst passiert nichts. Das ist der Ersatz für Cron auf
|
|
|
|
|
- Hostings ohne Cron.
|
|
|
|
|
|
|
+- Das Dashboard (`admin/index.php`) stößt die periodischen Aufgaben an, siehe
|
|
|
|
|
+ unten.
|
|
|
|
|
+
|
|
|
|
|
+## Ohne Cron: Auslösung durch Adminaktivität
|
|
|
|
|
+
|
|
|
|
|
+Auf dieser Installation steht in der Regel kein Cron zur Verfügung. Die beiden
|
|
|
|
|
+Aufgaben, die sonst geplant laufen würden, hängen deshalb an der Adminaktivität:
|
|
|
|
|
+`admin/index.php` ruft beim Aufruf `manageActivityRunDueTasks()` aus
|
|
|
|
|
+[`includes/manage-activity.php`](../includes/manage-activity.php) auf. Der Login
|
|
|
|
|
+leitet immer auf das Dashboard, jede Adminsitzung kommt also dort vorbei.
|
|
|
|
|
+
|
|
|
|
|
+| Aufgabe | Intervall | Konstante |
|
|
|
|
|
+|---|---|---|
|
|
|
|
|
+| Automatisches Backup | wöchentlich | `MANAGE_BACKUP_AUTO_INTERVAL_SECONDS` |
|
|
|
|
|
+| Statusmeldung (Heartbeat) | stündlich | `MANAGE_ACTIVITY_HEARTBEAT_INTERVAL` |
|
|
|
|
|
+
|
|
|
|
|
+Ist das Intervall noch nicht abgelaufen, passiert nichts. Nach einem frisch
|
|
|
|
|
+erstellten Backup wird die Statusmeldung unabhängig vom Intervall gesendet,
|
|
|
|
|
+damit der Manage-Server nicht bis zu eine Stunde lang ein veraltetes „letztes
|
|
|
|
|
+Backup“ anzeigt.
|
|
|
|
|
+
|
|
|
|
|
+Der Zeitstempel der letzten Statusmeldung steht in `data/manage/activity.json`
|
|
|
|
|
+und wird **vor** dem Request geschrieben: ein nicht erreichbarer Manage-Server
|
|
|
|
|
+kostet dadurch einen Versuch pro Intervall, nicht einen pro Seitenaufruf. Keine
|
|
|
|
|
+der beiden Aufgaben kann die Seite abbrechen — Fehler landen im Client-Log
|
|
|
|
|
+(`data/manage/manage-client.log`), ein fehlgeschlagenes Backup zusätzlich als
|
|
|
|
|
+Hinweis auf dem Dashboard.
|
|
|
|
|
+
|
|
|
|
|
+Die Update-Prüfung braucht keine eigene Auslösung: die Einstellungsseite und
|
|
|
|
|
+`admin/manage.php` holen das Manifest beim Rendern.
|
|
|
|
|
|
|
|
## Cron
|
|
## Cron
|
|
|
|
|
|
|
|
-Empfohlen, sobald Cron verfügbar ist:
|
|
|
|
|
|
|
+Nur relevant, wenn auf einer Installation doch Cron zur Verfügung steht - dann
|
|
|
|
|
+sind die Kommandos der zuverlässigere Weg und die Auslösung durch
|
|
|
|
|
+Adminaktivität greift nur noch selten ein:
|
|
|
|
|
|
|
|
```cron
|
|
```cron
|
|
|
20 3 * * * /usr/bin/php /pfad/zum/projekt/manage-client/bin/manage-client.php backup --trigger=cron --quiet
|
|
20 3 * * * /usr/bin/php /pfad/zum/projekt/manage-client/bin/manage-client.php backup --trigger=cron --quiet
|