cbrandel
New Creator

FirstSpirit als systemd service

Jump to solution

Hallo,

hat schon mal jemand den FirstSpirit Server (Version 5.2) unter Linux als systemd Service eingerichtet?

Wenn ja, wie?

Danke,

Christian Brandel

0 Kudos
1 Solution

Accepted Solutions
brueder
I'm new here

Hallo Christian,

intern gibt es bei uns ein paar Stellen, an denen FirstSpirit über systemd läuft. Ich habe dir mal eine kleine Vorlage angehängt, an der du dich orientieren kannst, wenn du das einrichten möchtest.

[Unit]

Description=FirstSpirit Server 5

ConditionPathExists=/opt/firstsprit5/bin/fs5

After=network.target

[Service]

Type=forking

PIDFile=/opt/firstsprit5/run/fs5-wrapper.pid

User=fs5

Group=fs5

UMask=0027

LimitNOFILE=10000

ExecStart=/opt/firstsprit5/bin/fs5 start

ExecStartPost=/bin/sleep 1

ExecStop=/opt/firstsprit5/bin/fs5 stop

[Install]

WantedBy=multi-user.target

Das ist natürlich nur eine Vorlage, und entsprechend deines Setups anzupassen. Es kann zum Beispiel sein, dass ihr noch einen Datenbankserver laufen habt der zuerst hochgefahren werden soll o.Ä., das müsste dann natürlich noch in die Dependencies mit rein. Oder so Kleinkram wie dass FirstSpirit an einem anderen Pfad installiert ist. Gleiches gilt natürlich für Benutzer und Gruppen.

Ich hoffe, dass dir das dennoch hilft.

Viele Grüße,

Lena

View solution in original post

0 Kudos
5 Replies
brueder
I'm new here

Hallo Christian,

intern gibt es bei uns ein paar Stellen, an denen FirstSpirit über systemd läuft. Ich habe dir mal eine kleine Vorlage angehängt, an der du dich orientieren kannst, wenn du das einrichten möchtest.

[Unit]

Description=FirstSpirit Server 5

ConditionPathExists=/opt/firstsprit5/bin/fs5

After=network.target

[Service]

Type=forking

PIDFile=/opt/firstsprit5/run/fs5-wrapper.pid

User=fs5

Group=fs5

UMask=0027

LimitNOFILE=10000

ExecStart=/opt/firstsprit5/bin/fs5 start

ExecStartPost=/bin/sleep 1

ExecStop=/opt/firstsprit5/bin/fs5 stop

[Install]

WantedBy=multi-user.target

Das ist natürlich nur eine Vorlage, und entsprechend deines Setups anzupassen. Es kann zum Beispiel sein, dass ihr noch einen Datenbankserver laufen habt der zuerst hochgefahren werden soll o.Ä., das müsste dann natürlich noch in die Dependencies mit rein. Oder so Kleinkram wie dass FirstSpirit an einem anderen Pfad installiert ist. Gleiches gilt natürlich für Benutzer und Gruppen.

Ich hoffe, dass dir das dennoch hilft.

Viele Grüße,

Lena

0 Kudos

Hallo Lena,

danke, das Template hatte ich auch schonmal ausprobiert (hatte es vom Support bekommen). Gerade die Parameter UMask und LimitNOFILE sind hier wichtig, da kommt man evtl. nicht sofort selbst drauf.

Das Problem scheint aber das Timing zu sein, mit dem der ServiceWrapper startet und wann das PID File zur Verfügung steht.

Mit dem "ExecStartPost=/bin/sleep 1" hat das jedenfalls nicht geklappt, der systemd hat das PID file nicht rechtzeitig bekommen und hat das ganze wieder gestoppt.

Starting FirstSpirit 5... PID file <filename> not readable (yet?) after start-post.

Bevor ich jetzt anfange den Parameter für sleep hochzudrehen und zu hoffen, daß es irgendwann mal klappt, wollte ich einfach mal in die Runde fragen, ob es anderweitig schon Erfahrungen damit gibt.

Gruß,

Christian

0 Kudos
groth
Crownpeak employee

Hallo Christian,

nur um nochmal sicherzugehen. Ist es wirklich ein Timing Problem oder ein Rechte Problem? Kannst du beobachten, dass das PID File erst mit Verzögerung angelegt wird? Ich weiß, dass es hier manchmal völlig unabhängig von FirstSpirit Rechte Probleme mit dem PID File gibt. Jenachdem wie du den systemd Service konfiguriert hast und welche Rechte der entsprechende User hat, kann es helfen das PID File zu verschieben.

Beispielhaft ein Link bei dem genau das die Lösung für Nginx war: https://www.svennd.be/pid-file-runnginx-pid-not-readable-yet-after-start/

Man kann also durchaus in Betracht ziehen, dass dies gar nichts speziell mit FirstSpirit zu tun hat. Ich hoffe das hilft dir vllt weiter!

Beste Grüße

Christian

0 Kudos
marro
Crownpeak employee

Hallo Christian B.,

benötigst Du noch weitere Hilfe oder hat Dir die Antwort von Cristian Groth geholfen?

In diesem Fall wäre es super, wenn Du die "richtige Antwort" entsprechend markierst, damit auch andere

Community-Teilnehmer diese auf den ersten Blick finden. Solltest Du zwischenzeitlich eine eigene Lösung

gefunden haben, wäre es nett, wenn Du diese hier bereitstellst.

Viele Grüße

Donato

0 Kudos
cbrandel
New Creator

Hallo,

wenn man den Pfad für das PID file richtig einträgt, funktioniert es auch...

Wir verwenden jetzt folgende Konfiguration (mit einem externen Environment file, damit könnten wir ohne den Service anfassen zu müssen, das FS5_DIR flexibel ändern).

/etc/systemd/system/fs5.service:

[Unit]

Description=FirstSpirit 5

After=network.target

[Service]

Type=forking

EnvironmentFile=/opt/web/firstspirit/.systemd.conf

User=web

Group=web

PIDFile=/opt/web/firstspirit/fs5/log/fs5.pid

UMask=0027

LimitNOFILE=10000

ExecStart=/usr/bin/env "${FS5_DIR}/bin/fs5" start

ExecStartPost=/bin/sleep 2

ExecStop=/usr/bin/env "${FS5_DIR}/bin/fs5" stop

[Install]

WantedBy=multi-user.target

Environment file /opt/web/firstspirit/.systemd.conf:

FS5_DIR=/opt/web/firstspirit/fs5

0 Kudos