Umstellung von Daemon-Diensten auf systemd: Unterschied zwischen den Versionen
Tim (Diskussion | Beiträge) K (Tim verschob die Seite Umstellung von Anwendungen auf systemd nach Umstellung von Daemon-Diensten auf systemd) |
Tim (Diskussion | Beiträge) |
||
Zeile 14: | Zeile 14: | ||
=== cronjob === | === cronjob === | ||
==== Generell ==== | |||
Mit dem Befehl <code>crontab -l</code> können die eigenen Cronjobs aufgelistet werden. | |||
Mit dem Befehl <code>crontab -e</code> bearbeiten wir unsere Hintergrundjobs. | |||
Wenn am Anfang einer Zeile das Rautezeichen # eingesetzt wird, dann ist die Zeile deaktiviert. | |||
Auf der Seite [[Cron]] werden weitere Einzelheiten beschrieben. | |||
==== Beispiel: Nextcloud Hintergrund Job ==== | |||
Hier haben wir ein Beispiel für einen Nextcloud Hintergrund Job, der alle 5 Minuten läuft, und in der crontab eingetragen ist: | |||
<syntaxhighlight lang="crontab"> | |||
*/5 * * * * /usr/bin/php $HOME/nextcloud/cron.php | |||
</syntaxhighlight> | |||
Wir deaktivieren diesen Cronjob, in dem wir ein # vor die Zeile setzen, wie oben beschrieben. | |||
Nun muss ggfs. das Verzeichnis für systemd angelegt werden: | |||
<syntaxhighlight lang="bash"> | |||
mkdir -p .config/systemd/user | |||
</syntaxhighlight> | |||
Nun wird die Datei für den oneshot Dienst angelegt: | |||
<syntaxhighlight lang="bash"> | |||
nano $HOME/.config/systemd/user/nextcloud-job.service | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="ini"> | |||
[Unit] | |||
Description=Nextcloud Hintergrundjob | |||
[Service] | |||
Type=oneshot | |||
ExecStart=/usr/bin/php $HOME/nextcloud/cron.php | |||
</syntaxhighlight> | |||
Nun wird die Datei für den Timer angelegt: | |||
<syntaxhighlight lang="bash"> | |||
nano $HOME/.config/systemd/user/nextcloud-job.timer | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="ini"> | |||
[Unit] | |||
Description=Timer für Nextcloud Hintergrundjob | |||
[Timer] | |||
OnCalendar=*:0/5 | |||
RandomizedDelaySec=30 | |||
[Install] | |||
WantedBy=timers.target | |||
</syntaxhighlight> | |||
Nun soll der Timer noch aktiviert werden: | |||
<syntaxhighlight lang="bash"> | |||
systemctl --user enable nextcloud-job.timer | |||
</syntaxhighlight> | |||
==== Beispiel: Logrotate aufrufen ==== | |||
Hier haben wir ein Beispiel für einen Logrotate Job, der einmal in der Nacht aufgerufen wird, und in der crontab eingetragen ist: | |||
<syntaxhighlight lang="crontab"> | |||
13 1 * * * /usr/sbin/logrotate -s $HOME/.logrotate.state $HOME/.logrotate | |||
</syntaxhighlight> | |||
Wir deaktivieren diesen Cronjob, in dem wir ein # vor die Zeile setzen, wie oben beschrieben. | |||
Nun muss ggfs. das Verzeichnis für systemd angelegt werden: | |||
<syntaxhighlight lang="bash"> | |||
mkdir -p .config/systemd/user | |||
</syntaxhighlight> | |||
Nun wird die Datei für den oneshot Dienst angelegt: | |||
<syntaxhighlight lang="bash"> | |||
nano $HOME/.config/systemd/user/logrotate-job.service | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="ini"> | |||
[Unit] | |||
Description=Logrotate Job | |||
[Service] | |||
Type=oneshot | |||
ExecStart=/usr/sbin/logrotate -s %h/.logrotate.state %h/.logrotate | |||
</syntaxhighlight> | |||
{{Textkasten|gelb|Beachte: $HOME wird durch %h ersetzt!}} | |||
Nun wird die Datei für den Timer angelegt: | |||
<syntaxhighlight lang="bash"> | |||
nano $HOME/.config/systemd/user/logrotate-job.timer | |||
</syntaxhighlight> | |||
<syntaxhighlight lang="ini"> | |||
[Unit] | |||
Description=Timer für Logrotate Job | |||
[Timer] | |||
OnCalendar=01:13 | |||
RandomizedDelaySec=300 | |||
[Install] | |||
WantedBy=timers.target | |||
</syntaxhighlight> | |||
Nun soll der Timer noch aktiviert werden: | |||
<syntaxhighlight lang="bash"> | |||
systemctl --user enable logrotate-job.timer | |||
</syntaxhighlight> | |||
=== monit === | === monit === |
Version vom 28. November 2024, 10:51 Uhr
Anlass dieser Anleitung
Ab November 2024 unterstützt die Managed Plattform ein RAM Kontingent pro Managed Webspace. Mitglieder buchen für ihre Webspaces jeweils ein RAM Kontingent in Schritten von jeweils 128 Megabyte. Das unterstützt uns besser bei der verursachergerechten Verteilung der Hardwarekosten, als es vorher mit einer Pauschale pro Serverdienst der Fall war. Änderungen des RAM Kontingents für einen Webspace nimmt der Service unter service@hostsharing.net entgegen, wie es bei anderen Paketoptionen die Vorgehensweise ist.
Damit die RAM Kontingente funktionieren, müssen im Managed Webspace alle Anwendungen, die im Userspace laufen, auf systemd umgestellt werden. Das betrifft Anwendungen, die bisher über z.B. cronjob, supervisor oder monit gestartet wurden.
Siehe auch unsere Systemd im Userspace Dokumentation.
Praktische Umstellung
Für eine Übergangsphase steht jedem Managed Webspace genügend RAM zur Verfügung, um eigene Serverdienste zu starten. Nach der Umstellung aller Dienste auf systemd wird dann das tatsächlich benötigte RAM-Kontingent ermittelt und gebucht.
cronjob
Generell
Mit dem Befehl crontab -l
können die eigenen Cronjobs aufgelistet werden.
Mit dem Befehl crontab -e
bearbeiten wir unsere Hintergrundjobs.
Wenn am Anfang einer Zeile das Rautezeichen # eingesetzt wird, dann ist die Zeile deaktiviert.
Auf der Seite Cron werden weitere Einzelheiten beschrieben.
Beispiel: Nextcloud Hintergrund Job
Hier haben wir ein Beispiel für einen Nextcloud Hintergrund Job, der alle 5 Minuten läuft, und in der crontab eingetragen ist:
*/5 * * * * /usr/bin/php $HOME/nextcloud/cron.php
Wir deaktivieren diesen Cronjob, in dem wir ein # vor die Zeile setzen, wie oben beschrieben.
Nun muss ggfs. das Verzeichnis für systemd angelegt werden:
mkdir -p .config/systemd/user
Nun wird die Datei für den oneshot Dienst angelegt:
nano $HOME/.config/systemd/user/nextcloud-job.service
[Unit]
Description=Nextcloud Hintergrundjob
[Service]
Type=oneshot
ExecStart=/usr/bin/php $HOME/nextcloud/cron.php
Nun wird die Datei für den Timer angelegt:
nano $HOME/.config/systemd/user/nextcloud-job.timer
[Unit]
Description=Timer für Nextcloud Hintergrundjob
[Timer]
OnCalendar=*:0/5
RandomizedDelaySec=30
[Install]
WantedBy=timers.target
Nun soll der Timer noch aktiviert werden:
systemctl --user enable nextcloud-job.timer
Beispiel: Logrotate aufrufen
Hier haben wir ein Beispiel für einen Logrotate Job, der einmal in der Nacht aufgerufen wird, und in der crontab eingetragen ist:
13 1 * * * /usr/sbin/logrotate -s $HOME/.logrotate.state $HOME/.logrotate
Wir deaktivieren diesen Cronjob, in dem wir ein # vor die Zeile setzen, wie oben beschrieben.
Nun muss ggfs. das Verzeichnis für systemd angelegt werden:
mkdir -p .config/systemd/user
Nun wird die Datei für den oneshot Dienst angelegt:
nano $HOME/.config/systemd/user/logrotate-job.service
[Unit]
Description=Logrotate Job
[Service]
Type=oneshot
ExecStart=/usr/sbin/logrotate -s %h/.logrotate.state %h/.logrotate
Beachte: $HOME wird durch %h ersetzt!
{{{3}}}
Nun wird die Datei für den Timer angelegt:
nano $HOME/.config/systemd/user/logrotate-job.timer
[Unit]
Description=Timer für Logrotate Job
[Timer]
OnCalendar=01:13
RandomizedDelaySec=300
[Install]
WantedBy=timers.target
Nun soll der Timer noch aktiviert werden:
systemctl --user enable logrotate-job.timer
monit
TODO: Beispiel
supervisor
TODO: Beispiel
Ermittlung und Buchung des benötigten RAM Kontingent
TODO: siehe Systemd_im_Userspace#RAM_Kontingent_eines_Webspace