operations.md 2.2 KB

Operations

Apache

  • Server: Apache HTTPD
  • Erforderlich: mod_rewrite aktiv
  • Erforderlich: AllowOverride All im Projektpfad
  • Root-.htaccess muss vorhanden sein und wird für Routing/Zugriffsschutz genutzt.

Cron Cleanup

Täglich ausführen:

php /pfad/zum/projekt/admin/cleanup.php

Retention

  • Drafts: config/app.local.php -> retention.draft_days (Default 14)
  • Submissions: config/app.local.php -> retention.submission_days (Default 90)

Konfiguration (Sample-Setup)

  • Versionierte Vorlagen: config/app.sample.php, config/mail.sample.php
  • Stabile Loader-Dateien im Repo: config/app.php, config/mail.php
  • Lokale Runtime-Dateien: config/app.local.php, config/mail.local.php
  • Erstsetup:
    • cp config/app.sample.php config/app.local.php
    • cp config/mail.sample.php config/mail.local.php
  • config/*.local.php sind lokal und sollen nicht in Git versioniert werden.

Logs

  • storage/logs/cleanup.log
  • storage/logs/mail.log
  • storage/logs/app.log
  • storage/logs/php_runtime.log
  • storage/logs/php_fatal.log

Bot-Schutz (Honeypot)

  • Das öffentliche Formular nutzt das Honeypot-Feld website als einfachen Spam-Schutz.
  • Anfragen mit nicht-leerem website werden mit HTTP 400 und common.request_blocked abgewiesen.

Backup

Regelmäßig sichern:

  • storage/submissions/
  • storage/uploads/
  • config/*.local.php

storage/drafts/ ist temporär und kann bei Bedarf ausgeschlossen werden.

Restore

  1. Projektdateien deployen.
  2. Backup von storage/submissions und storage/uploads zurückspielen.
  3. config/*.local.php wiederherstellen.
  4. Schreibrechte prüfen.

Troubleshooting

  • Keine Mails: Mailfunktion des Hosters prüfen, mail.log ansehen.
  • Upload Fehler: upload_max_filesize / post_max_size und Schema-Limits prüfen.
  • Login geht nicht: config/app.local.php -> admin.credentials prüfen (username + password_hash).
  • ZIP Download fehlgeschlagen: ZipArchive Erweiterung auf Hosting prüfen.
  • Unerwartet blockierte Requests (400 Anfrage blockiert): prüfen, ob das Feld website durch Client/Proxy/Plugin befüllt wird.
  • 500 ohne Apache/PHP-Fehlerausgabe: storage/logs/php_fatal.log und storage/logs/php_runtime.log prüfen.