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