Voraussetzungen und Informationen zum Erstellen eigener Unit-Files: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(→Unit) |
|||
| Zeile 49: | Zeile 49: | ||
*Es gibt 3 Bereiche | *Es gibt 3 Bereiche | ||
==Unit== | ==Unit== | ||
| + | *Diese Sektion kommt in der Regel zum Einsatz, um Metadaten für die Einheit zu definieren und die Beziehung der Unit zu anderen Einheiten zu konfigurieren. | ||
| + | ===[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 | ||
| + | Der Schlüssel Description beschreibt den Dienst. Den Wert dazu dürfen Sie frei wählen; er sollte aber den Zweck des Dienstes deutlich offenbaren. Der Schlüssel After enthält die Services und Targets, die dieser Dienst erwartet. Dabei sind Targets in Gruppen zusammengefasste Dienste (Abbildung 5). Dass die in unserem Fall allesamt Funktionen des Netzwerks betreffen, erklärt sich von selbst – schließlich kommen Sie ohne Netzwerk nirgendwo hin, um entfernte Laufwerke einzuhängen. | ||
| + | |||
==Service== | ==Service== | ||
==Install== | ==Install== | ||
Version vom 9. Januar 2023, 12:20 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_serve('0.0.0.0', 8000, hello_world_app)
httpd.server_forever()
- Diese müssen wir nun ausführbar machen.
- chmod +x /usr/local/bin/webserver.py
Service File
- .service Datei anlegen
- Man muss nun eine .service Datei unter /etc/systemd/system anlegen.
- 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
Erkärung
- Es gibt 3 Bereiche
Unit
- Diese Sektion kommt in der Regel zum Einsatz, um Metadaten für die Einheit zu definieren und die Beziehung der Unit zu anderen Einheiten zu konfigurieren.
===[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 Der Schlüssel Description beschreibt den Dienst. Den Wert dazu dürfen Sie frei wählen; er sollte aber den Zweck des Dienstes deutlich offenbaren. Der Schlüssel After enthält die Services und Targets, die dieser Dienst erwartet. Dabei sind Targets in Gruppen zusammengefasste Dienste (Abbildung 5). Dass die in unserem Fall allesamt Funktionen des Netzwerks betreffen, erklärt sich von selbst – schließlich kommen Sie ohne Netzwerk nirgendwo hin, um entfernte Laufwerke einzuhängen.
Service
Install
Handling
- Aktivieren
- systemctl enable webserver.service
- Starten
- systemctl start webserver.service
- Stoppen
- systemctl stop webserver.service
- Status
- systemctl status webserver.service
- Deaktivieren
- systemctl disable webserver.service