====== Runbook: Windows-Dienst ====== **Trajanje:** ~15 minuta \\ **Uloga:** Windows-Administrator \\ **Preduvjet:** Admin prava, .NET 8 Runtime Data Gateway kao Windows-Dienst instalirati i upravljati. ---- ===== Tijek rada ===== flowchart TD A[Start] --> B[Gateway kopirati] B --> C[Dienst registrirati] C --> D[Dienst konfigurirati] D --> E[Dienst pokrenuti] E --> F[Health Check] F --> G{OK?} G -->|Da| H[Gotovo] G -->|Ne| I[Event Log provjeriti] style H fill:#e8f5e9 style I fill:#ffebee ---- ===== 1. Gateway instalirati ===== # Direktorij kreirati New-Item -ItemType Directory -Path "%SERVICES_ROOT%\DataGateway" -Force # Datoteke kopirati Copy-Item -Path ".\publish\*" -Destination "%SERVICES_ROOT%\DataGateway" -Recurse # Konfiguraciju prilagoditi notepad "%SERVICES_ROOT%\DataGateway\appsettings.json" ---- ===== 2. Dienst sa sc.exe kreirati ===== # Kao Administrator izvrsiti 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" # Opis postaviti sc.exe description "DataGateway" "REST/OData/GraphQL API Gateway za baze podataka" ---- ===== 3. Dienst sa NSSM kreirati (Alternativa) ===== NSSM (Non-Sucking Service Manager) pruza vise kontrole: # NSSM preuzeti Invoke-WebRequest -Uri "https://nssm.cc/release/nssm-2.24.zip" -OutFile "nssm.zip" Expand-Archive -Path "nssm.zip" -DestinationPath "%TOOLS_PATH%" # Dienst instalirati %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. Dienst pokrenuti ===== # Pokretanje Start-Service -Name "DataGateway" # Status provjeriti Get-Service -Name "DataGateway" # Zaustavljanje Stop-Service -Name "DataGateway" # Ponovno pokretanje Restart-Service -Name "DataGateway" ---- ===== 5. Autostart konfigurirati ===== # Autostart pri pokretanju sustava Set-Service -Name "DataGateway" -StartupType Automatic # Odgodeni start (nakon mreze) sc.exe config "DataGateway" start= delayed-auto # Recovery opcije (pri padu ponovno pokrenuti) sc.exe failure "DataGateway" reset= 86400 actions= restart/60000/restart/60000/restart/60000 ---- ===== 6. Health Check ===== # Pricekati dok je Dienst spreman Start-Sleep -Seconds 5 # Health Check $response = Invoke-WebRequest -Uri "http://localhost:5000/health" -UseBasicParsing if ($response.StatusCode -eq 200) { Write-Host "Gateway radi!" -ForegroundColor Green } else { Write-Host "Gateway problem!" -ForegroundColor Red Get-EventLog -LogName Application -Source "DataGateway" -Newest 10 } ---- ===== 7. Kontrolna lista ===== | # | Provjera | Da/Ne | |---|-----------|---| | 1 | Datoteke u %SERVICES_ROOT%\DataGateway | - | | 2 | appsettings.json konfiguriran | - | | 3 | Dienst registriran | - | | 4 | Dienst pokrenut | - | | 5 | Health Check uspjesan | - | | 6 | Autostart aktivan | - | | 7 | Recovery konfiguriran | - | ---- ===== Rjesavanje problema ===== | Problem | Uzrok | Rjesenje | |---------|---------|--------| | ''Dienst se ne pokrece'' | Nedostaje .NET Runtime | ''dotnet --info'' provjeriti | | ''Access denied'' | Nedostaju prava | Kao Admin instalirati | | ''Port vec zauzet'' | Drugi proces | ''netstat -ano | findstr 5000'' | | ''Config error'' | JSON-Sintaksa | appsettings.json validirati | **Event Log provjeriti:** Get-EventLog -LogName Application -Source "DataGateway" -Newest 20 | Format-Table TimeGenerated, EntryType, Message -Wrap ---- ===== Dienst ukloniti ===== # Zaustaviti Stop-Service -Name "DataGateway" -Force # Ukloniti sc.exe delete "DataGateway" # Datoteke obrisati (opcionalno) Remove-Item -Path "%SERVICES_ROOT%\DataGateway" -Recurse -Force ---- ===== Povezani runbookovi ===== * [[.:docker|Docker]] - Container alternativa * [[..:tagesgeschaeft:health-check|Health Check]] - Dostupnost provjeriti * [[..:sicherheit:tls-einrichten|TLS postavljanje]] - HTTPS aktivirati ---- << [[.:start|<- Automatizacija]] | [[.:systemd|-> systemd]] >> ---- //Wolfgang van der Stille @ EMSR DATA d.o.o. - Data Gateway Professional// {{tag>operator runbook windows dienst service}}