Dauer: ~15 Minuten
Rolle: Windows-Administrator
Voraussetzung: Admin-Rechte, .NET 8 Runtime
Data Gateway als Windows-Dienst installieren und verwalten.
# 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"
# 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"
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
# Starten Start-Service -Name "DataGateway" # Status prüfen Get-Service -Name "DataGateway" # Stoppen Stop-Service -Name "DataGateway" # Neustarten Restart-Service -Name "DataGateway"
# 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
# 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 }
| # | 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 | ☐ |
| 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
# Stoppen Stop-Service -Name "DataGateway" -Force # Entfernen sc.exe delete "DataGateway" # Dateien löschen (optional) Remove-Item -Path "%SERVICES_ROOT%\DataGateway" -Recurse -Force
« ← Automatisierung | → systemd »
Wolfgang van der Stille @ EMSR DATA d.o.o. - Data Gateway Professional