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