📚 Improved documentation and log management in backend 🖥️🔍

This commit is contained in:
2025-06-03 20:45:45 +02:00
parent 89ac87b3e5
commit 0c4ee77648
39 changed files with 679 additions and 177 deletions

View File

@@ -930,9 +930,9 @@ EOF
}
install_python_packages() {
log "=== TIMEOUT-GESICHERTE PYTHON-PAKETE INSTALLATION ==="
log "=== PYTHON-PAKETE INSTALLATION ==="
progress "Installiere Python-Pakete mit Timeout-Sicherung..."
progress "Installiere Python-Pakete..."
if [ ! -f "$CURRENT_DIR/requirements.txt" ]; then
error "requirements.txt nicht gefunden: $CURRENT_DIR/requirements.txt"
@@ -941,81 +941,24 @@ install_python_packages() {
# Kopiere requirements.txt
cp "$CURRENT_DIR/requirements.txt" "$APP_DIR/" 2>/dev/null || true
# Timeout-gesicherte pip-Optionen
local pip_opts="--break-system-packages --timeout 60 --retries 2 --trusted-host pypi.org --trusted-host pypi.python.org --trusted-host files.pythonhosted.org --no-cache-dir"
# Installiere alle Pakete aus requirements.txt
progress "Installiere requirements.txt..."
# Strategie 1: Direkte Installation mit Timeout
progress "Versuche direkte requirements.txt Installation (max 10 Minuten)..."
if timeout 600 python3 -m pip install $pip_opts -r "$CURRENT_DIR/requirements.txt" >/dev/null 2>&1; then
if python3 -m pip install -r "$CURRENT_DIR/requirements.txt" --break-system-packages; then
success "✅ requirements.txt erfolgreich installiert"
return 0
else
warning "⚠️ Direkte Installation fehlgeschlagen oder Timeout - verwende minimale Installation"
debug "requirements.txt Installation nach 600s abgebrochen"
# Strategie 2: Nur essenzielle Pakete (timeout-gesichert)
progress "Installiere nur essenzielle Flask-Komponenten..."
# Minimale Flask-Installation für Funktionalität
local essential_deps=(
"Flask"
"Werkzeug"
"Jinja2"
"requests"
)
local installed_count=0
for dep in "${essential_deps[@]}"; do
progress "Installiere essenzielle Abhängigkeit: $dep"
if timeout 120 python3 -m pip install $pip_opts "$dep" >/dev/null 2>&1; then
success "$dep erfolgreich installiert"
((installed_count++))
else
warning "⚠️ $dep Installation fehlgeschlagen oder Timeout"
debug "$dep Timeout oder Fehler bei Installation"
fi
done
if [ $installed_count -eq 0 ]; then
warning "⚠️ Keine Python-Pakete konnten installiert werden"
warning "⚠️ Überspringe Python-Pakete Installation - verwende System-Pakete"
# Strategie 3: Fallback auf System-Pakete (APT)
progress "Versuche System-Python-Pakete als Fallback..."
local system_packages=("python3-flask" "python3-requests")
local system_installed=0
for pkg in "${system_packages[@]}"; do
if timeout 60 apt-get install -y "$pkg" >/dev/null 2>&1; then
success "✅ System-Paket installiert: $pkg"
((system_installed++))
else
debug "System-Paket fehlgeschlagen: $pkg"
fi
done
if [ $system_installed -gt 0 ]; then
success "✅ Fallback auf System-Pakete erfolgreich ($system_installed installiert)"
else
warning "⚠️ Auch System-Pakete Installation fehlgeschlagen"
info " → System läuft mit vorhandenen Python-Paketen"
info " → Manuell: pip3 install --break-system-packages Flask requests"
info " → Oder: apt install python3-flask python3-requests"
fi
else
success "$installed_count von ${#essential_deps[@]} essenziellen Paketen installiert"
fi
error "❌ requirements.txt Installation fehlgeschlagen"
return 1
fi
# Schnelle Validierung nur der essenziellen Pakete (timeout-gesichert)
# Validiere essenzielle Module
progress "Validiere essenzielle Python-Module..."
local essential_modules=("flask" "requests")
local validation_success=true
for module in "${essential_modules[@]}"; do
if timeout 10 python3 -c "import $module; print(f'✅ $module verfügbar')" 2>/dev/null; then
if python3 -c "import $module; print(f'✅ $module verfügbar')" 2>/dev/null; then
debug "$module erfolgreich importiert"
else
warning "⚠️ $module nicht verfügbar"
@@ -1027,12 +970,16 @@ install_python_packages() {
success "✅ Essenzielle Python-Module verfügbar"
else
warning "⚠️ Einige essenzielle Module fehlen"
info " → System funktioniert möglicherweise trotzdem"
info " → Fehlende Pakete: pip3 install --break-system-packages Flask requests"
fi
log "✅ Timeout-gesicherte Python-Pakete Installation abgeschlossen"
debug "Python-Installation ohne hängende Prozesse beendet"
log "✅ Python-Pakete Installation abgeschlossen"
# Zeige installierte Pakete
progress "Zeige installierte Python-Pakete..."
echo ""
echo "📦 Installierte Python-Pakete:"
python3 -m pip list 2>/dev/null | grep -E "(Flask|requests|Werkzeug|Jinja2)" | head -10 || echo " Keine relevanten Pakete gefunden"
echo ""
}
# =========================== ROBUSTE NODE.JS INSTALLATION ===========================
@@ -2203,6 +2150,10 @@ enable_and_start_services() {
test_application() {
log "=== UMFASSENDE SYSTEM-TESTS ==="
echo ""
echo -e "${BLUE}🔍 Führe System-Tests durch...${NC}"
echo ""
local test_errors=0
local test_warnings=0
@@ -2396,18 +2347,30 @@ except Exception as e:
fi
# Zusammenfassung der Tests
log "📊 System-Test Zusammenfassung:"
log " ❌ Fehler: $test_errors"
log " ⚠️ Warnungen: $test_warnings"
echo ""
echo -e "${CYAN}=================================================================${NC}"
echo -e "${CYAN} SYSTEM-TEST ERGEBNISSE${NC}"
echo -e "${CYAN}=================================================================${NC}"
echo ""
echo -e "${BLUE}📊 Test-Zusammenfassung:${NC}"
echo -e " ❌ Fehler: $test_errors"
echo -e " ⚠️ Warnungen: $test_warnings"
echo ""
if [ $test_errors -eq 0 ] && [ $test_warnings -eq 0 ]; then
success "✅ Alle System-Tests erfolgreich - System vollständig funktionsfähig"
echo -e "${GREEN}✅ Alle System-Tests erfolgreich!${NC}"
echo -e "${GREEN} → System vollständig funktionsfähig${NC}"
echo ""
return 0
elif [ $test_errors -eq 0 ]; then
warning "⚠️ System-Tests mit $test_warnings Warnungen abgeschlossen - System grundsätzlich funktionsfähig"
echo -e "${YELLOW}⚠️ System-Tests mit $test_warnings Warnungen abgeschlossen${NC}"
echo -e "${YELLOW} → System grundsätzlich funktionsfähig${NC}"
echo ""
return 0
else
error "❌ System-Tests mit $test_errors Fehlern fehlgeschlagen - System möglicherweise nicht funktionsfähig"
echo -e "${RED}❌ System-Tests mit $test_errors Fehlern fehlgeschlagen${NC}"
echo -e "${RED} → System möglicherweise nicht funktionsfähig${NC}"
echo ""
return 1
fi
}
@@ -2519,6 +2482,31 @@ install_dependencies_only() {
# Fehler-Zusammenfassung anzeigen
show_error_summary
# Finale Status-Anzeige
echo ""
echo -e "${GREEN}=================================================================${NC}"
echo -e "${GREEN} INSTALLATION ERFOLGREICH ABGESCHLOSSEN!${NC}"
echo -e "${GREEN}=================================================================${NC}"
echo ""
echo -e "${BLUE}📋 Was wurde installiert:${NC}"
echo -e " ✅ System-Updates und Tools"
echo -e " ✅ Python 3 und pip"
echo -e " ✅ Node.js und npm"
echo -e " ✅ SSL-Zertifikate"
echo -e " ✅ Anwendung deployed nach: $APP_DIR"
echo -e " ✅ Systemd-Services installiert"
echo ""
echo -e "${YELLOW}🚀 Nächste Schritte:${NC}"
echo -e " 1. Testen Sie die Anwendung:"
echo -e " ${CYAN}cd $APP_DIR && python3 app.py${NC}"
echo -e " 2. Oder prüfen Sie den Service:"
echo -e " ${CYAN}sudo systemctl status $HTTPS_SERVICE_NAME${NC}"
echo -e " 3. Zugriff über Browser:"
echo -e " ${CYAN}$HTTPS_URL${NC}"
echo ""
echo -e "${GREEN}✅ System bereit für manuelle Tests!${NC}"
echo -e "${GREEN}=================================================================${NC}"
}
install_full_production_system() {
@@ -2621,6 +2609,29 @@ install_full_production_system() {
# Fehler-Zusammenfassung anzeigen
show_error_summary
# Finale Status-Anzeige für Vollinstallation
echo ""
echo -e "${GREEN}=================================================================${NC}"
echo -e "${GREEN} VOLLSTÄNDIGE INSTALLATION ERFOLGREICH ABGESCHLOSSEN!${NC}"
echo -e "${GREEN}=================================================================${NC}"
echo ""
echo -e "${BLUE}📋 Was wurde installiert:${NC}"
echo -e " ✅ Komplettes Produktionssystem"
echo -e " ✅ Kiosk-Modus konfiguriert"
echo -e " ✅ Remote-Zugang (SSH & RDP)"
echo -e " ✅ Firewall konfiguriert"
echo -e " ✅ Automatischer Start beim Boot"
echo ""
echo -e "${YELLOW}🔐 Zugangsdaten:${NC}"
echo -e " SSH: user:raspberry (Port 22)"
echo -e " RDP: root:744563017196A (Port 3389)"
echo ""
echo -e "${RED}⚠️ WICHTIG: Neustart erforderlich!${NC}"
echo -e " ${CYAN}sudo reboot${NC}"
echo ""
echo -e "${GREEN}✅ Produktionssystem vollständig installiert!${NC}"
echo -e "${GREEN}=================================================================${NC}"
}
# =========================== RDP & SSH ZUGANG ===========================