Friendica: Update-Daemon und systemd
Für den Betrieb des dezentrale Netzwerk Friendica, müssen periodisch Nachrichten verschickt und notwendige andere Aufgaben abgearbeitet werden. Früher konnte dazu ein Cron-Job eingerichtet oder alternativ ein Addon installiert werden, welche diese Aufgaben periodisch ausführte. Mittlerweile hat Friendica dafür einen eigenen Daemon bekommen, dessen Einbindung in ein Debian-System mit systemd hier kurz vorgestellt wird.
Der Update-Daemon erzeugt ein PID-File, dessen Name und Pfad in der Konfigurationsdatei "config/local.config.php" eingestellt wird:
1'system' => [
2 'pidfile' => '/run/friendica/daemon.pid',
3 ],
Beim Systemstart existiert obiges Verzeichnis noch nicht. Debian verwaltet flüchtige Dateien und Verzeichnisse mit systemd-tmpfiles. Damit dieses Verzeichnis beim Systemstart automatisch angelegt wird, kann in die Datei "/etc/tmpfiles.d/friendica.conf" Folgendes eingetragen werden:
d /run/friendica 0755 www-data www-data -
Das Verzeichnis wird mit den angegebenen Berechtigungen und Eigentümer angelegt. Damit das Verzeichnis sofort zur Verfügung steht, wird folgender Befehl verwendet:
systemd-tmpfiles --create --prefix /run/friendica
Anschließend wird das Unit-File für systemd unter "/etc/systemd/system/friendica-daemon.service" mit folgendem Inhalt angelegt:
1[Unit]
2Description=Friendica daemon
3After=network.target mysqld.service
4Requires=network.target remote-fs.target nss-lookup.target
5
6[Service]
7User=www-data
8Group=www-data
9WorkingDirectory=/srv/friends
10Type=simple
11StandardOutput=null
12StandardError=syslog
13ExecStart=/usr/bin/php ./bin/daemon.php start
14ExecStop=/usr/bin/php ./bin/daemon.php stop
15PIDFile=friendica/daemon.pid
16PrivateTmp=true
17InaccessibleDirectories=/home /root /boot /opt /mnt /media
18ReadOnlyDirectories=/etc /usr
19Restart=always
20
21[Install]
22WantedBy=multi-user.target
Der Pfad bei WorkingDirectory muss auf den Pfad der lokalen Friendica-Installation angepasst werden. Anschießend werden die Unit-Files von systemd neu geladen:
systemctl daemon-reload
Jetzt kann der Update-Daemon mit systemd gestartet werden:
systemctl start friendica-daemon.service
Nach dem erfolgreichen Start schreibt der Update-Daemon seine PID in die oben angegebene Datei "/run/friendica/daemon.pid". Die gleiche PID sollte in der Ausgabe des folgenden Befehls angezeigt werden:
systemctl status friendica-daemon.service
Sollte bis hier hin alles korrekt verlaufen sein, kann der Update-Daemon für den automatischen Start beim Systemstart aktiviert werden:
systemctl enable friendica-daemon.service