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


« <- Windows storitev | -> Docker »


Wolfgang van der Stille @ EMSR DATA d.o.o. - Data Gateway Professional

Zuletzt geändert: dne 29.01.2026 ob 23:33