====== 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}}