diff --git a/backend/install.ps1 b/backend/install.ps1 index 25144841..c88bfb53 100644 --- a/backend/install.ps1 +++ b/backend/install.ps1 @@ -36,6 +36,58 @@ function Write-Error { Write-Log "FEHLER: $Message" -Color $Red } +# Verbesserte Funktion zum Parsen der Umgebungsvariablen +function Set-EnvironmentFromFile { + param([string]$FilePath) + + if (-not (Test-Path $FilePath)) { + Write-Warning "$FilePath nicht gefunden" + return + } + + Write-Log "⚙️ Lade Umgebungsvariablen aus $FilePath..." -Color $Blue + + try { + $EnvContent = Get-Content $FilePath -Raw + $Lines = $EnvContent -split "`r?`n" + + foreach ($Line in $Lines) { + # Überspringe leere Zeilen und Kommentare + if ([string]::IsNullOrWhiteSpace($Line) -or $Line.TrimStart().StartsWith('#')) { + continue + } + + # Finde den ersten = Zeichen + $EqualIndex = $Line.IndexOf('=') + if ($EqualIndex -le 0) { + continue + } + + # Extrahiere Key und Value + $Key = $Line.Substring(0, $EqualIndex).Trim() + $Value = $Line.Substring($EqualIndex + 1).Trim() + + # Entferne umgebende Anführungszeichen, falls vorhanden + if (($Value.StartsWith('"') -and $Value.EndsWith('"')) -or + ($Value.StartsWith("'") -and $Value.EndsWith("'"))) { + $Value = $Value.Substring(1, $Value.Length - 2) + } + + # Setze Umgebungsvariable + if (-not [string]::IsNullOrWhiteSpace($Key)) { + [Environment]::SetEnvironmentVariable($Key, $Value, "Process") + Write-Log "Geladen: $Key" -Color $Blue + } + } + + Write-Success "Umgebungsvariablen erfolgreich geladen" + + } catch { + Write-Error "Fehler beim Laden der Umgebungsvariablen: $_" + Write-Warning "Verwende Standard-Umgebungsvariablen" + } +} + # Banner Write-Host "========================================" -ForegroundColor $Blue Write-Host "🏭 MYP Backend - Windows Installation" -ForegroundColor $Blue @@ -158,23 +210,8 @@ if (Test-Path "requirements.txt") { # Umgebungskonfiguration Write-Log "⚙️ Konfiguriere Umgebung..." -Color $Blue -if (Test-Path "env.backend") { - Write-Log "Umgebungskonfiguration gefunden: env.backend" - - # Lade Umgebungsvariablen für Tests - $EnvContent = Get-Content "env.backend" - foreach ($Line in $EnvContent) { - if ($Line -match "^([^#][^=]+)=(.*)$") { - $Key = $Matches[1].Trim() - $Value = $Matches[2].Trim() - [Environment]::SetEnvironmentVariable($Key, $Value, "Process") - } - } - - Write-Success "Umgebungsvariablen geladen" -} else { - Write-Warning "env.backend nicht gefunden" -} +# Lade Umgebungsvariablen für Tests +Set-EnvironmentFromFile "env.backend" # Datenbank initialisieren Write-Log "🗄️ Initialisiere Datenbank..." -Color $Blue @@ -226,7 +263,7 @@ Write-Host "" Write-Host "📋 Nächste Schritte:" -ForegroundColor $Blue Write-Host "1. Backend starten:" -ForegroundColor $White -Write-Host " .\start-backend-server.ps1" -ForegroundColor $Yellow +Write-Host " .\start-backend-server.ps1 -Development" -ForegroundColor $Yellow Write-Host "" Write-Host "2. Health-Check testen:" -ForegroundColor $White Write-Host " curl http://localhost:5000/monitoring/health/simple" -ForegroundColor $Yellow diff --git a/backend/install.sh b/backend/install.sh index d616ffd7..8540ad96 100644 --- a/backend/install.sh +++ b/backend/install.sh @@ -120,7 +120,7 @@ install_system_dependencies() { else log "Bitte installieren Sie Python 3 manuell für Ihr System" fi - exit 1 + exit 1 fi # Python-Version prüfen @@ -142,10 +142,10 @@ install_system_dependencies() { sudo apt install python3-pip else error_log "Bitte installieren Sie pip3 manuell" - exit 1 - fi - fi - + exit 1 + fi +fi + # Weitere notwendige System-Pakete prüfen if [[ "$OS" == *"Ubuntu"* ]] || [[ "$OS" == *"Debian"* ]]; then log "Prüfe System-Pakete für Ubuntu/Debian..." diff --git a/backend/start-backend-server.ps1 b/backend/start-backend-server.ps1 index e59e4882..dd20feb7 100644 --- a/backend/start-backend-server.ps1 +++ b/backend/start-backend-server.ps1 @@ -92,26 +92,63 @@ try { exit 1 } -# Umgebungsvariablen laden -if (Test-Path "env.backend") { - Write-Log "⚙️ Lade Backend-Umgebungsvariablen..." -Color $Blue +# Verbesserte Funktion zum Parsen der Umgebungsvariablen +function Set-EnvironmentFromFile { + param([string]$FilePath) - $EnvContent = Get-Content "env.backend" - foreach ($Line in $EnvContent) { - if ($Line -match "^([^#][^=]+)=(.*)$") { - $Key = $Matches[1].Trim() - $Value = $Matches[2].Trim() - [Environment]::SetEnvironmentVariable($Key, $Value, "Process") - } + if (-not (Test-Path $FilePath)) { + Write-Warning "$FilePath nicht gefunden" + return } - # Überschreibe FLASK_ENV mit dem gewählten Modus - $env:FLASK_ENV = $RunMode - Write-Success "Umgebungsvariablen geladen" -} else { - Write-Warning "env.backend nicht gefunden" + Write-Log "⚙️ Lade Backend-Umgebungsvariablen aus $FilePath..." -Color $Blue + + try { + $EnvContent = Get-Content $FilePath -Raw + $Lines = $EnvContent -split "`r?`n" + + foreach ($Line in $Lines) { + # Überspringe leere Zeilen und Kommentare + if ([string]::IsNullOrWhiteSpace($Line) -or $Line.TrimStart().StartsWith('#')) { + continue + } + + # Finde den ersten = Zeichen + $EqualIndex = $Line.IndexOf('=') + if ($EqualIndex -le 0) { + continue + } + + # Extrahiere Key und Value + $Key = $Line.Substring(0, $EqualIndex).Trim() + $Value = $Line.Substring($EqualIndex + 1).Trim() + + # Entferne umgebende Anführungszeichen, falls vorhanden + if (($Value.StartsWith('"') -and $Value.EndsWith('"')) -or + ($Value.StartsWith("'") -and $Value.EndsWith("'"))) { + $Value = $Value.Substring(1, $Value.Length - 2) + } + + # Setze Umgebungsvariable + if (-not [string]::IsNullOrWhiteSpace($Key)) { + [Environment]::SetEnvironmentVariable($Key, $Value, "Process") + Write-Log "Geladen: $Key" -Color $Blue + } + } + + # Überschreibe FLASK_ENV mit dem gewählten Modus + [Environment]::SetEnvironmentVariable("FLASK_ENV", $RunMode, "Process") + Write-Success "Umgebungsvariablen erfolgreich geladen" + + } catch { + Write-Error "Fehler beim Laden der Umgebungsvariablen: $_" + Write-Warning "Verwende Standard-Umgebungsvariablen" + } } +# Umgebungsvariablen laden +Set-EnvironmentFromFile "env.backend" + # Notwendige Verzeichnisse erstellen Write-Log "📁 Prüfe Verzeichnisse..." -Color $Blue @@ -212,7 +249,7 @@ if ($RunMode -eq "production") { # Warte auf Server-Start Write-Log "Warte auf Backend-Service..." -Color $Blue $Counter = 0 - $Timeout = 60 + $TimeoutSeconds = 60 do { Start-Sleep -Seconds 1 @@ -229,11 +266,11 @@ if ($RunMode -eq "production") { } if ($Counter % 10 -eq 0) { - Write-Log "Warte auf Backend-Service... ($Counter/$Timeout Sekunden)" + Write-Log "Warte auf Backend-Service... ($Counter/$TimeoutSeconds Sekunden)" } - } while ($Counter -lt $Timeout) + } while ($Counter -lt $TimeoutSeconds) - if ($Counter -eq $Timeout) { + if ($Counter -eq $TimeoutSeconds) { Write-Error "Backend-Service konnte nicht gestartet werden!" exit 1 } @@ -259,7 +296,7 @@ if ($RunMode -eq "production") { # Warte auf Server-Start Write-Log "Warte auf Backend-Service..." -Color $Blue $Counter = 0 - $Timeout = 60 + $TimeoutSeconds = 60 do { Start-Sleep -Seconds 1 @@ -276,11 +313,11 @@ if ($RunMode -eq "production") { } if ($Counter % 10 -eq 0) { - Write-Log "Warte auf Backend-Service... ($Counter/$Timeout Sekunden)" + Write-Log "Warte auf Backend-Service... ($Counter/$TimeoutSeconds Sekunden)" } - } while ($Counter -lt $Timeout) + } while ($Counter -lt $TimeoutSeconds) - if ($Counter -eq $Timeout) { + if ($Counter -eq $TimeoutSeconds) { Write-Error "Backend-Service konnte nicht gestartet werden!" if ($FlaskProcess -and !$FlaskProcess.HasExited) { $FlaskProcess.Kill()