Inhaltsverzeichnis
Runbook: systemd
Dauer: ~10 Minuten
Rolle: Linux-Administrator
Voraussetzung: root/sudo, .NET 8 Runtime
Data Gateway als systemd-Service unter Linux betreiben.
Workflow
flowchart TD
A[Start] --> B[Gateway installieren]
B --> C[Service-Unit erstellen]
C --> D[systemctl enable]
D --> E[systemctl start]
E --> F[Health Check]
F --> G{OK?}
G -->|Ja| H[Fertig]
G -->|Nein| I[journalctl prüfen]
style H fill:#e8f5e9
style I fill:#ffebee
1. Gateway installieren
# Verzeichnis erstellen sudo mkdir -p /opt/data-gateway sudo chown $USER:$USER /opt/data-gateway # Dateien kopieren cp -r ./publish/* /opt/data-gateway/ # Ausführbar machen chmod +x /opt/data-gateway/WvdS.WebAPI.Data.Gateway.Api # Konfiguration anpassen sudo nano /opt/data-gateway/appsettings.json
2. Benutzer erstellen
# Dedizierter Service-Benutzer sudo useradd --system --no-create-home --shell /sbin/nologin datagateway # Berechtigungen setzen sudo chown -R datagateway:datagateway /opt/data-gateway
3. systemd Unit erstellen
sudo nano /etc/systemd/system/data-gateway.service
Inhalt:
[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 # Sicherheit NoNewPrivileges=true ProtectSystem=strict ProtectHome=true PrivateTmp=true ReadWritePaths=/opt/data-gateway/logs ReadWritePaths=/opt/data-gateway/data # Limits LimitNOFILE=65536 TimeoutStopSec=30 [Install] WantedBy=multi-user.target
4. Service aktivieren
# systemd neu laden sudo systemctl daemon-reload # Autostart aktivieren sudo systemctl enable data-gateway # Service starten sudo systemctl start data-gateway # Status prüfen sudo systemctl status data-gateway
5. Health Check
# Warten bis bereit sleep 5 # Health Check curl -s http://localhost:5000/health # Erwartete Antwort: "Healthy" # API-Test curl -s http://localhost:5000/api/v1/dsn/demo/tables | head
6. Logs anzeigen
# Aktuelle Logs sudo journalctl -u data-gateway -n 50 --no-pager # Live-Tail sudo journalctl -u data-gateway -f # Seit heute sudo journalctl -u data-gateway --since today # Nur Fehler sudo journalctl -u data-gateway -p err
7. Checkliste
| # | Prüfpunkt | ✓ |
| — | ———– | — |
| 1 | .NET 8 installiert | ☐ |
| 2 | Gateway in /opt/data-gateway | ☐ |
| 3 | Service-User erstellt | ☐ |
| 4 | Unit-Datei erstellt | ☐ |
| 5 | Service enabled | ☐ |
| 6 | Service gestartet | ☐ |
| 7 | Health Check OK | ☐ |
Service-Befehle
| Befehl | Beschreibung |
| ——– | ————– |
systemctl start data-gateway | Starten |
systemctl stop data-gateway | Stoppen |
systemctl restart data-gateway | Neustarten |
systemctl status data-gateway | Status |
systemctl enable data-gateway | Autostart an |
systemctl disable data-gateway | Autostart aus |
Troubleshooting
| Problem | Ursache | Lösung |
| ——— | ——— | ——– |
code=exited, status=203 | Falscher Pfad | ExecStart prüfen |
code=exited, status=1 | Config-Fehler | journalctl prüfen |
Permission denied | Falsche Rechte | chown prüfen |
Address already in use | Port belegt | anderen Port oder Prozess killen |
Detaillierte Fehleranalyse:
# Ausführbare Datei direkt testen sudo -u datagateway /opt/data-gateway/WvdS.WebAPI.Data.Gateway.Api # SELinux-Probleme (RHEL/CentOS) sudo ausearch -m avc -ts recent sudo setsebool -P httpd_can_network_connect 1
Port ändern
In appsettings.json:
{
"Kestrel": {
"Endpoints": {
"Http": {
"Url": "http://0.0.0.0:8080"
}
}
}
}
Firewall öffnen:
# firewalld (RHEL/CentOS) sudo firewall-cmd --permanent --add-port=8080/tcp sudo firewall-cmd --reload # ufw (Ubuntu/Debian) sudo ufw allow 8080/tcp
Service entfernen
# Stoppen und deaktivieren sudo systemctl stop data-gateway sudo systemctl disable data-gateway # Unit-Datei entfernen sudo rm /etc/systemd/system/data-gateway.service sudo systemctl daemon-reload # Dateien entfernen (optional) sudo rm -rf /opt/data-gateway sudo userdel datagateway
Verwandte Runbooks
- Docker – Container-Alternative
- Prometheus – Metrics exportieren
- TLS einrichten – HTTPS
« ← Windows-Dienst | → Docker »
Wolfgang van der Stille @ EMSR DATA d.o.o. - Data Gateway Professional
Zuletzt geändert: den 29.01.2026 um 15:12