Barvna shema: Svetla
Trenutno dejavna stran: start » de » Dokumentation » Datenintegration und Datenzugriff » WKL Database Gateway » Anleitungen » So richten Sie den Dienst von Hand als Systemdienst ein

So richten Sie den Dienst von Hand als Systemdienst ein

Unter Windows richtet das Installationspaket den Dienst ein. Ohne Paket – etwa für einen Testrechner oder unter Linux – richten Sie ihn so ein. Dasselbe Programm läuft als Konsolenprozess, Windows-Dienst oder systemd-Dienst und meldet Start und Stopp an die jeweilige Dienststeuerung.

Lösungsübersicht

Der Dienst nimmt unter der Windows-Dienststeuerung sein Programmverzeichnis als Inhaltsstamm (appsettings*.json, ein relativer Speicherpfad); unter systemd gilt WorkingDirectory. Das Dienstkonto braucht Lesezugriff auf Programm und Hauptschlüssel und Schreibzugriff auf den Datenordner mit dem Verwaltungsspeicher.

Konfiguration, Hauptschlüssel, Berechtigungen des Datenordners und die Firewall-Regel richtet der Befehl setup-host ein, derselbe, den das Installationspaket aufruft (siehe Befehle am Server). Von Hand bleiben nur das Kopieren der Dateien und das Registrieren des Dienstes.

Welches Dienstkonto. Das Installationspaket nimmt das virtuelle Konto NT SERVICE\Wkl.Data.Gateway: Es braucht kein Kennwort, und seine Rechte gelten nur für diesen Dienst. NT AUTHORITY\NetworkService geht ebenso, wird aber von vielen Diensten geteilt; was ihm der Datenordner erlaubt, dürfen dann auch diese. Ein virtuelles Konto lässt sich erst auflösen, wenn der Dienst registriert ist; deshalb wird der Dienst vor setup-host angelegt.

Umsetzung

Windows (PowerShell als Administrator)

  1. Kopieren Sie die veröffentlichten Dateien in den Programmordner:

    $program = Join-Path $env:ProgramFiles 'Wkl\Data Gateway'
    New-Item -ItemType Directory -Force $program | Out-Null
    Copy-Item -Recurse .\publish\* $program
  2. Registrieren Sie den Dienst, noch ohne ihn zu starten:

    sc.exe create Wkl.Data.Gateway binPath= "`"$program\dbgwsvc.exe`"" start= auto obj= "NT SERVICE\Wkl.Data.Gateway"
  3. Richten Sie Konfiguration, Datenordner und Hauptschlüssel ein. Ohne --certificate lauscht der Dienst nur auf http://127.0.0.1:8434; HTTPS ergänzen Sie danach nach HTTPS und Zertifikat:

    & "$program\dbgwsvc.exe" setup-host --program $program `
        --data (Join-Path $env:ProgramData 'Wkl.Data.Gateway') --service-account 'NT SERVICE\Wkl.Data.Gateway'

    Rückgabe 0. Der Befehl schreibt appsettings.Production.json in den Programmordner, legt den Datenordner mit Berechtigungen nur für Administratoren, System und das Dienstkonto an und erzeugt geheim\hauptschluessel.key. Sichern Sie diese Datei außerhalb des Servers.

  4. Registrieren Sie die Ereignisquelle, damit der Dienst ins Ereignisprotokoll schreibt (Windows PowerShell 5.1): New-EventLog -LogName Application -Source Wkl.Data.Gateway.
  5. Starten Sie den Dienst: Start-Service Wkl.Data.Gateway.
  6. Legen Sie den ersten Administrator an; siehe Den ersten Administrator anlegen.
  7. Prüfen Sie: Invoke-RestMethod http://127.0.0.1:8434/health/live antwortet Healthy; Get-Service Wkl.Data.Gateway meldet Running.

Linux

  1. Legen Sie ein Konto ohne Anmeldung an (useradd --system --no-create-home wkl-gateway), kopieren Sie die Dateien der Linux-Version (linux-x64, vom Anbieter als eigenes Archiv geliefert; das Installationspaket enthält nur die Windows-Version) nach /opt/wkl/gateway und geben Sie dem Konto Schreibrecht nur auf den Datenordner. Die Konfiguration schreiben Sie dort selbst nach appsettings.Production.json: mindestens Kestrel:Endpoints und Gateway:Store mit Pfad und Hauptschlüssel (siehe Konfiguration); setup-host richtet Linux nicht ein.
  2. Legen Sie die Unit-Datei /etc/systemd/system/wkl-gateway.service an:

    [Unit]
    Description=Wkl.Data.Gateway
    After=network-online.target
     
    [Service]
    Type=notify
    WorkingDirectory=/opt/wkl/gateway
    ExecStart=/opt/wkl/gateway/Wkl.Data.Gateway
    User=wkl-gateway
     
    [Install]
    WantedBy=multi-user.target

    Ohne den Abschnitt [Install] lehnt systemctl enable die Unit ab.

  3. Starten Sie mit systemctl enable --now wkl-gateway; das Protokoll steht im Journal (journalctl -u wkl-gateway).

Hinweise

  • Einen Ordner, den der Dienst selbst anlegt, dürfen nur das Dienstkonto und die Administratoren lesen; die Administratoren brauchen den Zugriff für die Befehle am Server.
  • Aus der Konsole gestartet ändert sich am Verhalten nichts.
  • Ohne registrierte Ereignisquelle läuft der Dienst weiter, schreibt aber nichts ins Ereignisprotokoll; siehe Fehlerbehebung.

Verwandte Themen

de/wiki/data-conectivity/database-gateway/how-to/run-as-windows-service.txt · Zadnja sprememba: uporabnika Wolfgang van der Stille