====== Runbook: Windows-Dienst ====== **Dauer:** ~15 Minuten \\ **Rolle:** Windows-Administrator \\ **Voraussetzung:** Admin-Rechte, .NET 8 Runtime Data Gateway als Windows-Dienst installieren und verwalten. ---- ===== Workflow ===== flowchart TD A[Start] --> B[Gateway kopieren] B --> C[Dienst registrieren] C --> D[Dienst konfigurieren] D --> E[Dienst starten] E --> F[Health Check] F --> G{OK?} G -->|Ja| H[Fertig] G -->|Nein| I[Event Log prüfen] style H fill:#e8f5e9 style I fill:#ffebee ---- ===== 1. Gateway installieren ===== # Verzeichnis erstellen New-Item -ItemType Directory -Path "%SERVICES_ROOT%\DataGateway" -Force # Dateien kopieren Copy-Item -Path ".\publish\*" -Destination "%SERVICES_ROOT%\DataGateway" -Recurse # Konfiguration anpassen notepad "%SERVICES_ROOT%\DataGateway\appsettings.json" ---- ===== 2. Dienst mit sc.exe erstellen ===== # Als Administrator ausführen sc.exe create "DataGateway" ` binPath= "%SERVICES_ROOT%\DataGateway\WvdS.WebAPI.Data.Gateway.Api.exe" ` DisplayName= "WvdS Data Gateway" ` start= auto ` obj= "NT AUTHORITY\NETWORK SERVICE" # Beschreibung setzen sc.exe description "DataGateway" "REST/OData/GraphQL API Gateway für Datenbanken" ---- ===== 3. Dienst mit NSSM erstellen (Alternative) ===== NSSM (Non-Sucking Service Manager) bietet mehr Kontrolle: # NSSM herunterladen Invoke-WebRequest -Uri "https://nssm.cc/release/nssm-2.24.zip" -OutFile "nssm.zip" Expand-Archive -Path "nssm.zip" -DestinationPath "%TOOLS_PATH%" # Dienst installieren %TOOLS_PATH%\nssm-2.24\win64\nssm.exe install DataGateway "%SERVICES_ROOT%\DataGateway\WvdS.WebAPI.Data.Gateway.Api.exe" # Konfiguration nssm set DataGateway AppDirectory "%SERVICES_ROOT%\DataGateway" nssm set DataGateway DisplayName "WvdS Data Gateway" nssm set DataGateway Description "REST/OData/GraphQL API Gateway" nssm set DataGateway Start SERVICE_AUTO_START nssm set DataGateway AppStdout "%SERVICES_ROOT%\DataGateway\logs\stdout.log" nssm set DataGateway AppStderr "%SERVICES_ROOT%\DataGateway\logs\stderr.log" nssm set DataGateway AppRotateFiles 1 nssm set DataGateway AppRotateBytes 10485760 ---- ===== 4. Dienst starten ===== # Starten Start-Service -Name "DataGateway" # Status prüfen Get-Service -Name "DataGateway" # Stoppen Stop-Service -Name "DataGateway" # Neustarten Restart-Service -Name "DataGateway" ---- ===== 5. Autostart konfigurieren ===== # Autostart bei Systemstart Set-Service -Name "DataGateway" -StartupType Automatic # Verzögerter Start (nach Netzwerk) sc.exe config "DataGateway" start= delayed-auto # Recovery-Optionen (bei Absturz neustarten) sc.exe failure "DataGateway" reset= 86400 actions= restart/60000/restart/60000/restart/60000 ---- ===== 6. Health Check ===== # Warten bis Dienst bereit Start-Sleep -Seconds 5 # Health Check $response = Invoke-WebRequest -Uri "http://localhost:5000/health" -UseBasicParsing if ($response.StatusCode -eq 200) { Write-Host "Gateway läuft!" -ForegroundColor Green } else { Write-Host "Gateway-Problem!" -ForegroundColor Red Get-EventLog -LogName Application -Source "DataGateway" -Newest 10 } ---- ===== 7. Checkliste ===== | # | Prüfpunkt | ✓ | |---|-----------|---| | 1 | Dateien in %SERVICES_ROOT%\DataGateway | ☐ | | 2 | appsettings.json konfiguriert | ☐ | | 3 | Dienst registriert | ☐ | | 4 | Dienst gestartet | ☐ | | 5 | Health Check erfolgreich | ☐ | | 6 | Autostart aktiv | ☐ | | 7 | Recovery konfiguriert | ☐ | ---- ===== Troubleshooting ===== | Problem | Ursache | Lösung | |---------|---------|--------| | ''Dienst startet nicht'' | Fehlende .NET Runtime | ''dotnet --info'' prüfen | | ''Access denied'' | Fehlende Rechte | Als Admin installieren | | ''Port bereits belegt'' | Anderer Prozess | ''netstat -ano | findstr 5000'' | | ''Config error'' | JSON-Syntax | appsettings.json validieren | **Event Log prüfen:** Get-EventLog -LogName Application -Source "DataGateway" -Newest 20 | Format-Table TimeGenerated, EntryType, Message -Wrap ---- ===== Dienst entfernen ===== # Stoppen Stop-Service -Name "DataGateway" -Force # Entfernen sc.exe delete "DataGateway" # Dateien löschen (optional) Remove-Item -Path "%SERVICES_ROOT%\DataGateway" -Recurse -Force ---- ===== Verwandte Runbooks ===== * [[.:docker|Docker]] – Container-Alternative * [[..:tagesgeschaeft:health-check|Health Check]] – Verfügbarkeit prüfen * [[..:sicherheit:tls-einrichten|TLS einrichten]] – HTTPS aktivieren ---- << [[.:start|← Automatisierung]] | [[.:systemd|→ systemd]] >> ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Data Gateway Professional// {{tag>operator runbook windows dienst service}}