====== Runbook: Windows storitev ======
**Trajanje:** ~15 minut \\
**Vloga:** Windows administrator \\
**Predpogoj:** Administratorske pravice, .NET 8 Runtime
Namestitev in upravljanje Data Gateway kot Windows storitev.
----
===== Potek dela =====
flowchart TD
A[Začetek] --> B[Kopiranje Gateway]
B --> C[Registracija storitve]
C --> D[Konfiguracija storitve]
D --> E[Zagon storitve]
E --> F[Health Check]
F --> G{V redu?}
G -->|Da| H[Končano]
G -->|Ne| I[Preveri Event Log]
style H fill:#e8f5e9
style I fill:#ffebee
----
===== 1. Namestitev Gateway =====
# Ustvari mapo
New-Item -ItemType Directory -Path "%SERVICES_ROOT%\DataGateway" -Force
# Kopiraj datoteke
Copy-Item -Path ".\publish\*" -Destination "%SERVICES_ROOT%\DataGateway" -Recurse
# Prilagodi konfiguracijo
notepad "%SERVICES_ROOT%\DataGateway\appsettings.json"
----
===== 2. Ustvarjanje storitve s sc.exe =====
# Izvedi kot administrator
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"
# Nastavi opis
sc.exe description "DataGateway" "REST/OData/GraphQL API Gateway za podatkovne baze"
----
===== 3. Ustvarjanje storitve z NSSM (alternativa) =====
NSSM (Non-Sucking Service Manager) ponuja več nadzora:
# Prenesi NSSM
Invoke-WebRequest -Uri "https://nssm.cc/release/nssm-2.24.zip" -OutFile "nssm.zip"
Expand-Archive -Path "nssm.zip" -DestinationPath "%TOOLS_PATH%"
# Namesti storitev
%TOOLS_PATH%\nssm-2.24\win64\nssm.exe install DataGateway "%SERVICES_ROOT%\DataGateway\WvdS.WebAPI.Data.Gateway.Api.exe"
# Konfiguracija
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. Zagon storitve =====
# Zaženi
Start-Service -Name "DataGateway"
# Preveri status
Get-Service -Name "DataGateway"
# Ustavi
Stop-Service -Name "DataGateway"
# Ponovno zaženi
Restart-Service -Name "DataGateway"
----
===== 5. Konfiguracija samodejnega zagona =====
# Samodejni zagon ob zagonu sistema
Set-Service -Name "DataGateway" -StartupType Automatic
# Zakasnjen zagon (po omrežju)
sc.exe config "DataGateway" start= delayed-auto
# Možnosti obnovitve (ponovni zagon ob sesutju)
sc.exe failure "DataGateway" reset= 86400 actions= restart/60000/restart/60000/restart/60000
----
===== 6. Health Check =====
# Počakaj da je storitev pripravljena
Start-Sleep -Seconds 5
# Health Check
$response = Invoke-WebRequest -Uri "http://localhost:5000/health" -UseBasicParsing
if ($response.StatusCode -eq 200) {
Write-Host "Gateway deluje!" -ForegroundColor Green
} else {
Write-Host "Težava z Gateway!" -ForegroundColor Red
Get-EventLog -LogName Application -Source "DataGateway" -Newest 10
}
----
===== 7. Kontrolni seznam =====
| # | Točka preverjanja | V |
|---|-----------|---|
| 1 | Datoteke v %SERVICES_ROOT%\DataGateway | |
| 2 | appsettings.json konfiguriran | |
| 3 | Storitev registrirana | |
| 4 | Storitev zagnana | |
| 5 | Health Check uspešen | |
| 6 | Samodejni zagon aktiven | |
| 7 | Obnovitev konfigurirana | |
----
===== Odpravljanje težav =====
| Težava | Vzrok | Rešitev |
|---------|---------|--------|
| ''Storitev se ne zažene'' | Manjka .NET Runtime | Preveri ''dotnet --info'' |
| ''Access denied'' | Manjkajoče pravice | Namesti kot administrator |
| ''Vrata že v uporabi'' | Drug proces | ''netstat -ano | findstr 5000'' |
| ''Config error'' | JSON sintaksa | Validiraj appsettings.json |
**Preverjanje Event Log:**
Get-EventLog -LogName Application -Source "DataGateway" -Newest 20 | Format-Table TimeGenerated, EntryType, Message -Wrap
----
===== Odstranitev storitve =====
# Ustavi
Stop-Service -Name "DataGateway" -Force
# Odstrani
sc.exe delete "DataGateway"
# Izbriši datoteke (neobvezno)
Remove-Item -Path "%SERVICES_ROOT%\DataGateway" -Recurse -Force
----
===== Povezani Runbooks =====
* [[.:docker|Docker]] - Kontejnerska alternativa
* [[..:tagesgeschaeft:health-check|Health Check]] - Preverjanje razpoložljivosti
* [[..:sicherheit:tls-einrichten|Nastavitev TLS]] - Aktiviranje HTTPS
----
<< [[.:start|<- Avtomatizacija]] | [[.:systemd|-> systemd]] >>
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Data Gateway Professional//
{{tag>operator runbook windows dienst service}}