Voraussetzungen und Informationen zum Erstellen eigener Unit-Files: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „=Eigener Service= *Eigene Services werden in /etc/systemd/system abgelegt, und sind einfache INI-Dateien, in denen die Anweisungen für systemd stehen. *Dieses…“)
 
Zeile 3: Zeile 3:
 
*Dieses generiert aus der Datei eine Service-Unit, die mittels systemctl verwaltet werden kann.
 
*Dieses generiert aus der Datei eine Service-Unit, die mittels systemctl verwaltet werden kann.
 
*Das Verhalten wird von journald geloggt und kann über journalctl eingesehen werden.
 
*Das Verhalten wird von journald geloggt und kann über journalctl eingesehen werden.
 +
=Beispiel=
 +
*Im folgenden wird anhand eines Beispiels gezeigt, wie man eine eigene Service Unit für systemd anlegt und aktiviert.
 +
*Das Programm, welches ausgeführt werden soll, ist ein simpler, in Python geschriebener Webserver.
 +
*Dieser machtnichts anderes, als auf localhost und Port 8000 zu lauschen und beim Zugriff "Hello World" und die aktuelle Uhrzeit auszugeben.
 +
=Python Script=
 +
*/usr/local/bin/webserver.py
 +
<pre>
 +
#!/usr/bin/env python3
 +
 +
from wsgiref.simple_server import make_server
 +
from datetime import datetime
 +
 +
def hello_world_app(environ, start_response):
 +
    status = '200 OK'
 +
    headers = [('Content-type', 'text/plain; charset=utf-8')]
 +
    start_response(status, headers)
 +
    text = 'Hello World @ {}'.format(datetime.now())
 +
    return [text.encode('utf-8')]
 +
 +
httpd = make_server('0.0.0.0', 8000, hello_world_app)
 +
httpd.server_forever()
 +
</pre>
 +
 +
=Service File=
 +
cat /etc/systemd/system/webserver.service
 +
<pre>
 +
[Unit]
 +
Description=Simple WSGI Server
 +
 +
[Service]
 +
Type=simple
 +
ExecStart=/usr/local/bin/webserver.py
 +
ExecStartPost=/bin/echo "Server gestartet"
 +
User=www-data
 +
 +
[Install]
 +
WantedBy=multi-user.target
 +
</pre>

Version vom 9. Januar 2023, 11:55 Uhr

Eigener Service

  • Eigene Services werden in /etc/systemd/system abgelegt, und sind einfache INI-Dateien, in denen die Anweisungen für systemd stehen.
  • Dieses generiert aus der Datei eine Service-Unit, die mittels systemctl verwaltet werden kann.
  • Das Verhalten wird von journald geloggt und kann über journalctl eingesehen werden.

Beispiel

  • Im folgenden wird anhand eines Beispiels gezeigt, wie man eine eigene Service Unit für systemd anlegt und aktiviert.
  • Das Programm, welches ausgeführt werden soll, ist ein simpler, in Python geschriebener Webserver.
  • Dieser machtnichts anderes, als auf localhost und Port 8000 zu lauschen und beim Zugriff "Hello World" und die aktuelle Uhrzeit auszugeben.

Python Script

  • /usr/local/bin/webserver.py
#!/usr/bin/env python3

from wsgiref.simple_server import make_server
from datetime import datetime

def hello_world_app(environ, start_response):
    status = '200 OK'
    headers = [('Content-type', 'text/plain; charset=utf-8')]
    start_response(status, headers)
    text = 'Hello World @ {}'.format(datetime.now())
    return [text.encode('utf-8')]

httpd = make_server('0.0.0.0', 8000, hello_world_app)
httpd.server_forever()

Service File

cat /etc/systemd/system/webserver.service

[Unit]
Description=Simple WSGI Server

[Service]
Type=simple
ExecStart=/usr/local/bin/webserver.py
ExecStartPost=/bin/echo "Server gestartet"
User=www-data

[Install]
WantedBy=multi-user.target