====== Runbook: systemd ======
**Trajanje:** ~10 minut \\
**Vloga:** Linux administrator \\
**Predpogoj:** root/sudo, .NET 8 Runtime
Poganjanje Data Gateway kot systemd storitev pod Linuxom.
----
===== Potek dela =====
flowchart TD
A[Začetek] --> B[Namestitev Gateway]
B --> C[Ustvarjanje Service-Unit]
C --> D[systemctl enable]
D --> E[systemctl start]
E --> F[Health Check]
F --> G{V redu?}
G -->|Da| H[Končano]
G -->|Ne| I[Preveri journalctl]
style H fill:#e8f5e9
style I fill:#ffebee
----
===== 1. Namestitev Gateway =====
# Ustvari mapo
sudo mkdir -p /opt/data-gateway
sudo chown $USER:$USER /opt/data-gateway
# Kopiraj datoteke
cp -r ./publish/* /opt/data-gateway/
# Nastavi kot izvršljivo
chmod +x /opt/data-gateway/WvdS.WebAPI.Data.Gateway.Api
# Prilagodi konfiguracijo
sudo nano /opt/data-gateway/appsettings.json
----
===== 2. Ustvarjanje uporabnika =====
# Namenski storitveni uporabnik
sudo useradd --system --no-create-home --shell /sbin/nologin datagateway
# Nastavi dovoljenja
sudo chown -R datagateway:datagateway /opt/data-gateway
----
===== 3. Ustvarjanje systemd Unit =====
sudo nano /etc/systemd/system/data-gateway.service
**Vsebina:**
[Unit]
Description=WvdS Data Gateway
Documentation=https://wiki.example.com/data-gateway
After=network.target
[Service]
Type=notify
User=datagateway
Group=datagateway
WorkingDirectory=/opt/data-gateway
ExecStart=/opt/data-gateway/WvdS.WebAPI.Data.Gateway.Api
Restart=always
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=data-gateway
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
# Varnost
NoNewPrivileges=true
ProtectSystem=strict
ProtectHome=true
PrivateTmp=true
ReadWritePaths=/opt/data-gateway/logs
ReadWritePaths=/opt/data-gateway/data
# Omejitve
LimitNOFILE=65536
TimeoutStopSec=30
[Install]
WantedBy=multi-user.target
----
===== 4. Aktiviranje storitve =====
# Ponovno naloži systemd
sudo systemctl daemon-reload
# Aktiviraj samodejni zagon
sudo systemctl enable data-gateway
# Zaženi storitev
sudo systemctl start data-gateway
# Preveri status
sudo systemctl status data-gateway
----
===== 5. Health Check =====
# Počakaj da je pripravljen
sleep 5
# Health Check
curl -s http://localhost:5000/health
# Pričakovan odgovor: "Healthy"
# API test
curl -s http://localhost:5000/api/v1/dsn/demo/tables | head
----
===== 6. Prikaz dnevnikov =====
# Trenutni dnevniki
sudo journalctl -u data-gateway -n 50 --no-pager
# Live-Tail
sudo journalctl -u data-gateway -f
# Od danes
sudo journalctl -u data-gateway --since today
# Samo napake
sudo journalctl -u data-gateway -p err
----
===== 7. Kontrolni seznam =====
| # | Točka preverjanja | V |
|---|-----------|---|
| 1 | .NET 8 nameščen | |
| 2 | Gateway v /opt/data-gateway | |
| 3 | Service-User ustvarjen | |
| 4 | Unit datoteka ustvarjena | |
| 5 | Service enabled | |
| 6 | Service zagnan | |
| 7 | Health Check v redu | |
----
===== Storitveni ukazi =====
| Ukaz | Opis |
|--------|--------------|
| ''systemctl start data-gateway'' | Zaženi |
| ''systemctl stop data-gateway'' | Ustavi |
| ''systemctl restart data-gateway'' | Ponovno zaženi |
| ''systemctl status data-gateway'' | Status |
| ''systemctl enable data-gateway'' | Samodejni zagon vklopljen |
| ''systemctl disable data-gateway'' | Samodejni zagon izklopljen |
----
===== Odpravljanje težav =====
| Težava | Vzrok | Rešitev |
|---------|---------|--------|
| ''code=exited, status=203'' | Napačna pot | Preveri ExecStart |
| ''code=exited, status=1'' | Napaka v konfiguraciji | Preveri journalctl |
| ''Permission denied'' | Napačne pravice | Preveri chown |
| ''Address already in use'' | Vrata zasedena | Druga vrata ali ubij proces |
**Podrobna analiza napak:**
# Neposredno testiraj izvršljivo datoteko
sudo -u datagateway /opt/data-gateway/WvdS.WebAPI.Data.Gateway.Api
# SELinux težave (RHEL/CentOS)
sudo ausearch -m avc -ts recent
sudo setsebool -P httpd_can_network_connect 1
----
===== Spreminjanje vrat =====
V ''appsettings.json'':
{
"Kestrel": {
"Endpoints": {
"Http": {
"Url": "http://0.0.0.0:8080"
}
}
}
}
**Odpiranje požarnega zidu:**
# firewalld (RHEL/CentOS)
sudo firewall-cmd --permanent --add-port=8080/tcp
sudo firewall-cmd --reload
# ufw (Ubuntu/Debian)
sudo ufw allow 8080/tcp
----
===== Odstranitev storitve =====
# Ustavi in deaktiviraj
sudo systemctl stop data-gateway
sudo systemctl disable data-gateway
# Odstrani Unit datoteko
sudo rm /etc/systemd/system/data-gateway.service
sudo systemctl daemon-reload
# Odstrani datoteke (neobvezno)
sudo rm -rf /opt/data-gateway
sudo userdel datagateway
----
===== Povezani Runbooks =====
* [[.:docker|Docker]] - Kontejnerska alternativa
* [[..:monitoring:prometheus|Prometheus]] - Izvoz metrik
* [[..:sicherheit:tls-einrichten|Nastavitev TLS]] - HTTPS
----
<< [[.:windows-dienst|<- Windows storitev]] | [[.:docker|-> Docker]] >>
----
//Wolfgang van der Stille @ EMSR DATA d.o.o. - Data Gateway Professional//
{{tag>operator runbook linux systemd service}}