xinetd Service zu systemd konvertieren

Früher hatte man mit xinetd eine schnelle Möglichkeit einen kleinen Web-Service aufzusetzen. Heute geht das noch eleganter mit systemd socket.

Wenn man beispielsweise einen xinetd Service hat, der wie folgt aussieht:

/etc/xinetd.d/appld

service application
{
        flags        = REUSE
        socket_type  = stream
        wait         = no
        user         = example
        server       = /opt/appl/bin/appld
        type         = UNLISTED
        port         = 24146
        protocol     = tcp
        disable      = no
}

Im obigen Beispiel würde die Ausgabe des Scripts /opt/appl/bin/appld ausgegeben werden, wenn man sich auf dem Port 24146 verbindet, z.B.:

# curl 'http://localhost:24146'
Hello World

Um das nun auf systemd nachzubauen erstellt man zwei Dateien, eine .socket und eine .service Datei:

/etc/systemd/system/application.socket

[Unit]
Description=Application Socket

[Socket]
ListenStream=24146
Accept=yes                          

[Install]
WantedBy=sockets.target

/etc/systemd/system/application@.service

[Unit]
Description=Application Per-Connection Server

[Service]
ExecStart=-/usr/bin/appld
User=example
Group=example
StandardInput=socket

Wenn wir nun den application socket starten:

systemctl enable application.socket
systemctl start application.socket
systemctl status -l application.socket

läuft der Webservice und kann genauso wie bei der xinetd Variante aufgerufen werden:

# curl 'http://localhost:24146'
Hello World

Quellen

Published by

Steven Varco

Steven ist ein Redhat RHCE- und Kubernetes CKA Zertifizierter Linux-Crack und ist seit über 20 Jahren sowohl beruflich wie auch privat auf Linux spezialisiert. In seinem Keller steht ein Server Rack mit diversen ESX und Linux Servern.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert