5 Wartung
Ralf Warmuth edited this page 2026-01-10 15:55:48 +01:00

Wartungs-Dokumentation

Übersicht

Dieses Dokument beschreibt regelmäßige Wartungsaufgaben und Troubleshooting für die Zwergen-Börse Website.

Regelmäßige Wartungsaufgaben

Täglich

Anmeldeanzahl prüfen:

  • Admin-Bereich öffnen
  • Counter prüfen (/backend/web/counter.php)
  • Bei Bedarf CSV-Export

Wöchentlich

Logs prüfen:

  • PHP Error Logs
  • Web-Server Logs
  • Admin-Actions Log (public/data/admin_actions.log)

Backup erstellen:

# Datenbank
cp public/data/zwergenboerse.db backup/zwergenboerse_$(date +%Y%m%d).db

# Optional: Gesamtes public/ Verzeichnis
tar -czf backup/public_$(date +%Y%m%d).tar.gz public/

Monatlich

Dependencies aktualisieren:

npm update
npm audit fix

Datenbank optimieren:

VACUUM;

System-Updates:

  • PHP-Updates prüfen
  • Server-Updates (falls nötig)

Vor jeder Veranstaltung

  1. Konfiguration prüfen:

    • Event-Datum
    • Anmeldezeitraum
    • Nummernbereich
    • Organisator-E-Mail
  2. Test-Anmeldung durchführen:

    • Formular testen
    • E-Mail-Versand prüfen
    • Admin-Benachrichtigung prüfen
  3. Backup erstellen

Nach jeder Veranstaltung

  1. Anmeldungen exportieren (CSV)
  2. Backup erstellen
  3. Anmeldungen löschen (optional, für nächste Veranstaltung)
  4. Konfiguration zurücksetzen (falls nötig)

Troubleshooting

Häufige Probleme

Problem: Anmeldeformular wird nicht angezeigt

Symptome:

  • "Anmeldung ist nur vom X bis Y möglich" außerhalb Zeitraum
  • "Kontingent erschöpft" obwohl noch Plätze frei

Lösung:

  1. Konfiguration im Admin-Bereich prüfen
  2. Anmeldezeitraum prüfen
  3. Nummernbereich prüfen
  4. Datenbank prüfen (vergebene Nummern)

Problem: E-Mails werden nicht versendet

Symptome:

  • Keine Bestätigungs-E-Mails
  • Keine Organisator-Benachrichtigungen

Lösung:

  1. PHP mail() Funktion testen:

    <?php
    mail('test@schumbi.de', 'Test', 'Test-Mail');
    ?>
    
  2. sendmail/postfix Status prüfen:

    systemctl status postfix
    
  3. Error-Logs prüfen:

    tail -f /var/log/php_errors.log
    
  4. SMTP-Konfiguration prüfen (falls verwendet)

Problem: Datenbank-Fehler

Symptome:

  • "Database directory is not writable"
  • "Could not open database file"

Lösung:

  1. Berechtigungen prüfen:

    ls -la public/data/
    chmod 755 public/data
    chown www-data:www-data public/data
    
  2. Verzeichnis existiert:

    mkdir -p public/data
    
  3. Disk-Space prüfen:

    df -h
    

Problem: Admin-Login funktioniert nicht

Symptome:

  • "Zu viele Fehlversuche"
  • Passwort wird nicht akzeptiert

Lösung:

  1. Rate-Limit warten (10 Minuten)

  2. Passwort prüfen

  3. Session-Dateien prüfen:

    ls -la /var/lib/php/sessions/
    
  4. Passwort zurücksetzen (in Datenbank):

    -- config ist eine Key/Value-Tabelle
    UPDATE config SET value = '$2y$10$...' WHERE `key` = 'adminPasswordHash';
    

Problem: Build schlägt fehl

Symptome:

  • npm run build gibt Fehler
  • Dateien werden nicht generiert

Lösung:

  1. Node.js-Version prüfen (18+):

    node --version
    
  2. Dependencies neu installieren:

    rm -rf node_modules package-lock.json
    npm install
    
  3. Fehlermeldungen prüfen

  4. Disk-Space prüfen

Performance-Probleme

Langsame Datenbank-Abfragen

Lösung:

  1. Datenbank optimieren:

    VACUUM;
    ANALYZE;
    
  2. Indizes prüfen (falls nötig)

  3. Anzahl Anmeldungen prüfen (bei sehr vielen: Archivierung)

Hohe Server-Last

Lösung:

  1. Caching implementieren (falls nötig)
  2. PHP-Opcache aktivieren
  3. Web-Server optimieren
  4. Monitoring einrichten

Backup & Wiederherstellung

Backup-Strategie

Automatisiert (empfohlen):

#!/bin/bash
# backup.sh
DATE=$(date +%Y%m%d)
BACKUP_DIR="/path/to/backups"

# Datenbank
cp public/data/zwergenboerse.db $BACKUP_DIR/zwergenboerse_$DATE.db

# Alte Backups löschen (älter als 30 Tage)
find $BACKUP_DIR -name "zwergenboerse_*.db" -mtime +30 -delete

Cron-Job:

# Täglich um 2 Uhr
0 2 * * * /path/to/backup.sh

Wiederherstellung

Datenbank:

cp backup/zwergenboerse_YYYYMMDD.db public/data/zwergenboerse.db
chmod 644 public/data/zwergenboerse.db

Gesamtes System:

tar -xzf backup/public_YYYYMMDD.tar.gz -C /path/to/restore/

Monitoring

Zu überwachen

  1. Disk-Space:

    df -h
    
  2. PHP-Error-Logs:

    tail -f /var/log/php_errors.log
    
  3. Web-Server-Logs:

    tail -f /var/log/apache2/access.log
    tail -f /var/log/apache2/error.log
    
  4. Anmeldeanzahl:

    • Counter-Endpoint prüfen
    • CSV-Export regelmäßig

Alerts einrichten

Bei kritischen Problemen:

  • Disk-Space < 10%
  • PHP-Errors
  • Datenbank-Fehler
  • E-Mail-Versand-Fehler

Updates

Dependencies aktualisieren

Node.js:

npm update
npm audit fix

PHP:

  • System-Updates (apt/yum)
  • PHP-Extensions prüfen

Sicherheits-Updates

Regelmäßig prüfen:

  • PHP-Sicherheits-Updates
  • Node.js-Sicherheits-Updates
  • System-Updates

Vorgehen:

  1. Backup erstellen
  2. Updates testen (Staging)
  3. Updates einspielen
  4. Funktionen testen

Cleanup

Alte Daten

Anmeldungen löschen (nach Veranstaltung):

  • Über Admin-Interface (außerhalb Zeitraum)
  • Oder manuell in Datenbank

Logs rotieren:

# Log-Rotation einrichten
logrotate /etc/logrotate.d/zwergenboerse

Build-Artefakte

public/ Verzeichnis:

  • Wird beim Build neu generiert
  • Alte Dateien werden überschrieben

node_modules:

  • Kann nach Build gelöscht werden (wird bei npm install neu erstellt)

Dokumentation aktualisieren

Bei Änderungen

  1. Code-Kommentare aktualisieren
  2. Wiki-Dokumentation aktualisieren
  3. Changelog führen (optional)

Neue Funktionen dokumentieren

  • In entsprechendem Wiki-Dokument
  • Code-Kommentare
  • Admin-Anleitung (falls Admin-Funktion)

Support & Kontakt

Bei Problemen

  1. Logs prüfen
  2. Dokumentation konsultieren
  3. Backup prüfen (vor Änderungen)
  4. System-Administrator kontaktieren

Nützliche Befehle

# PHP-Info
php -i

# PHP-Version
php -v

# SQLite-Version
sqlite3 --version

# Node.js-Version
node --version

# Disk-Space
df -h

# Logs anzeigen
tail -f /var/log/php_errors.log