{% extends 'admin/shell.html.twig' %} {% set nav = 'system' %} {% block title %}System{% endblock %} {% block scripts %}{% endblock %} {% block heading %}System und Update{% endblock %} {% block lead %}Fassung, Updateweg und Sicherungen dieser Installation.{% endblock %} {% block content %}
/{{ adminPath }}
{% if adminPath == 'admin' %}
– Standardpfad, den jeder Scanner zuerst probiert. Ändern: php bin/console cms:admin:path <neu>.
{% else %}
– geändert; steht in keiner öffentlichen Datei. Zurück: php bin/console cms:admin:path admin.
{% endif %}
{{ database.datei }}
{% if database.bytes %}· {{ (database.bytes / 1048576)|number_format(1, ',', '.') }} MB{% endif %}
{% if not database.schreibbar %}{{ database.adresse }}
{% endif %}
{{ database.quelle }}; Server-Umgebungsvariablen haben Vorrang.
{{ origin.adresse }}{% else %}Nicht eingetragen.{% endif %}
{% if origin.passt %}
– Canonical, Sitemap und Feed nennen sie; die Schreibweise {{ origin.adresse matches '{^https?://www\.}' ? 'ohne' : 'mit' }} www leitet hierher um.
{% else %}
{{ origin.host }}. Canonical, Sitemap und Feed nennen trotzdem die eingetragene Adresse. Stimmt die nicht mehr, unten ändern.
{% endif %}
{% if origin.quelle == '.env' %}
{# Wie „WordPress-Adresse“: eine Stelle für mit oder ohne www. Vor dem Speichern fragt
die Installation sich selbst unter der neuen Adresse an. #}
{% set host = origin.adresse|split('://')|last|split(':')|first %}
{% set twin = host starts with 'www.' ? host|slice(4) : 'www.' ~ host %}
{% else %}
.env und lässt sich nur beim Hoster ändern.
{% endif %}
public/.htaccess – geändert oder eine alte Fassung. Das nächste Update bringt sie zurück.
{% elseif not https.writable %}
public/.htaccess nicht schreiben. Von Hand: das # vor den drei Zeilen unter „HTTPS erzwingen“ entfernen.
{% else %}
{% if not https.redirect and origin.adresse starts with 'https://' %}Vorher wird geprüft, ob {{ origin.adresse }} mit gültigem Zertifikat hier ankommt, danach, ob sie es weiterhin tut. Klappt das nicht, bleibt alles, wie es war.
{% endif %} {% endif %}{{ state.describe }}{% if state.commit != 'unbekannt' %} · Commit {{ state.commit }}{% endif %}v1.2.3 in der Herkunft gefunden.
{% else %}
Beim Repository nachfragen
{% endif %}
Die Website antwortet Besuchern mit 503. Wenn das nicht beabsichtigt ist, hebe den Wartungszustand auf – ein gescheitertes Update kann ihn eingeschaltet gelassen haben.
{% endif %}Der Code ist neuer als die Datenbank – typisch nach einem Update von Hand über FTP.
{{ name }}Vorher sichern: Migrationen sind nicht umkehrbar, der Rückweg ist die Sicherung.
Die Dateien der Fassung {{ archivePending.fassung }} liegen bereits (seit {{ archivePending.seit|slice(0, 16)|replace({"T": " "}) }} UTC). Es fehlen noch die Migrationen – bis dahin bleibt die Website im Wartungszustand.
{% endif %}Ohne Git: Archiv laden, Prüfsumme vergleichen, Datenbank und Medien sichern, Wartungsseite an, Dateien tauschen, Datenbank anpassen, prüfen. Unberührt bleiben var/, .env, die geladenen Schriften und das erzeugte Stylesheet-Bündel.
Sichern, Wartungszustand ein, auf den Tag wechseln, Abhängigkeiten, Migrationen, Cache, Antwortprüfung. Scheitert ein Schritt, wird zurückgesetzt – die Datenbank nur, wenn die Migration schon begonnen hatte.
Der Medienordner wird nicht gesichert. Ein Update ist keine Datensicherung.
Bricht der Browseraufruf auf dem Hosting ab: php bin/console cms:update – dieselben Schritte mit --check, --dry-run und --to=v1.2.0.
Ein Inhaltspaket enthält Seiten mit allen Fassungen, Bereiche, Menüs, Medien und PDFs, Formulare, Weiterleitungen, Kategorien, Übersetzungen, Design und Einstellungen. Nicht darin: Anfragen, Statistik, Zugangsdaten zu Diensten (Turnstile) und – ohne Häkchen – die Konten.
Eine Sicherung enthält die Datenbank als vollständige Kopie und den Medienordner – nicht .env, vendor/ und den Quellcode.
Zurückspielen nur auf der Konsole: php bin/console cms:restore <name>. Die tägliche Sicherung erledigt der Aufgabenplan.
| Name | Erstellt | Fassung | Inhalt | Größe | Zustand |
|---|---|---|---|---|---|
{{ backup.name }} |
{{ backup.manifest ? backup.manifest.erstellt|date('d.m.Y H:i') : '—' }}{% if backup.manifest %} {{ backup.manifest.anlass }}{% endif %} |
{{ backup.manifest ? backup.manifest.fassung : '—' }} | {% if backup.manifest %}{{ backup.manifest.inhalt.seiten }} Seiten, {{ backup.manifest.medien.dateien }} Dateien{% else %}—{% endif %} | {{ (backup.bytes / 1048576)|number_format(1, ',', '.') }} MB | {% if backup.intact %}unversehrt{% else %}Prüfsumme falsch{% endif %} |
„Unversehrt“ heißt: die Prüfsumme stimmt noch. Stimmt sie nicht, wird die Sicherung nicht eingespielt.
{% endif %}Noch kein Update über diesen Weg eingespielt.
{% else %} {# Zwanzig Protokollzeilen sind auf einem Handy zwanzig Absätze. Die jüngsten fünf stehen offen, der Rest liegt eine Umdrehung dahinter. #}{{ line }}{{ line }}KantSites · Arbeitsstand
{% endblock %}