Bug 40901: (follow-up) Extract koha-create-dirs into a oneshot unit

Replace per-service ExecStartPre=+koha-create-dirs (running as root
on every start of every service) with a single oneshot unit per
instance. Services declare Requires= on it, and the oneshot's Before=
ensures directories exist before any service starts.

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Martin Renvoize <martin.renvoize@openfifth.co.uk>
Signed-off-by: Pedro Amorim <pedro.amorim@openfifth.co.uk>
This commit is contained in:
Tomás Cohen Arazi 2026-04-27 14:19:59 -03:00 committed by Pedro Amorim
parent 90825d3292
commit 439be05aef
No known key found for this signature in database
GPG Key ID: 06B75BA7F3894D55
9 changed files with 20 additions and 8 deletions

View File

@ -0,0 +1,12 @@
[Unit]
Description=Create directories for Koha instance %i
PartOf=koha@%i.target
Before=koha-plack@%i.service koha-zebra@%i.service koha-indexer@%i.service koha-es-indexer@%i.service koha-worker@%i.service koha-worker-long_tasks@%i.service koha-sip@%i.service koha-z3950@%i.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=+/usr/sbin/koha-create-dirs %i
[Install]
WantedBy=koha@%i.target

View File

@ -1,6 +1,7 @@
[Unit]
Description=Koha Elasticsearch indexer daemon for %i
PartOf=koha@%i.target
Requires=koha-create-dirs@%i.service
After=koha@%i.target
[Service]
@ -11,7 +12,6 @@ WorkingDirectory=/var/lib/koha/%i
Environment=KOHA_CONF=/etc/koha/sites/%i/koha-conf.xml
Environment=KOHA_HOME=/usr/share/koha
Environment=PERL5LIB=/usr/share/koha/lib
ExecStartPre=+/usr/sbin/koha-create-dirs %i
ExecStart=/usr/share/koha/bin/workers/es_indexer_daemon.pl
Restart=on-failure
RestartSec=30s

View File

@ -1,6 +1,7 @@
[Unit]
Description=Koha Zebra indexer daemon for %i
PartOf=koha@%i.target
Requires=koha-create-dirs@%i.service
After=koha@%i.target koha-zebra@%i.service
[Service]
@ -11,7 +12,6 @@ WorkingDirectory=/var/lib/koha/%i
Environment=KOHA_CONF=/etc/koha/sites/%i/koha-conf.xml
Environment=KOHA_HOME=/usr/share/koha
Environment=PERL5LIB=/usr/share/koha/lib
ExecStartPre=+/usr/sbin/koha-create-dirs %i
ExecStart=/usr/share/koha/bin/migration_tools/rebuild_zebra.pl -daemon -sleep 5
Restart=on-failure
RestartSec=30s

View File

@ -1,6 +1,7 @@
[Unit]
Description=Koha Plack server for %i
PartOf=koha@%i.target
Requires=koha-create-dirs@%i.service
After=koha@%i.target
[Service]
@ -12,7 +13,6 @@ Environment=KOHA_CONF=/etc/koha/sites/%i/koha-conf.xml
Environment=KOHA_HOME=/usr/share/koha
Environment=PERL5LIB=/usr/share/koha/lib
PIDFile=/var/run/koha/%i/plack.pid
ExecStartPre=+/usr/sbin/koha-create-dirs %i
ExecStart=/usr/bin/plackup -s Starman --daemonize --pid /var/run/koha/%i/plack.pid --listen /var/run/koha/%i/plack.sock /etc/koha/plack.psgi
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure

View File

@ -1,6 +1,7 @@
[Unit]
Description=Koha SIP server for %i
PartOf=koha@%i.target
Requires=koha-create-dirs@%i.service
After=koha@%i.target
ConditionPathExists=/var/lib/koha/%i/sip.enabled
ConditionPathExists=/etc/koha/sites/%i/SIPconfig.xml
@ -13,7 +14,6 @@ WorkingDirectory=/var/lib/koha/%i
Environment=KOHA_CONF=/etc/koha/sites/%i/koha-conf.xml
Environment=KOHA_HOME=/usr/share/koha
Environment=PERL5LIB=/usr/share/koha/lib
ExecStartPre=+/usr/sbin/koha-create-dirs %i
ExecStart=/usr/bin/perl /usr/share/koha/lib/C4/SIP/SIPServer.pm /etc/koha/sites/%i/SIPconfig.xml
Restart=on-failure
RestartSec=30s

View File

@ -1,6 +1,7 @@
[Unit]
Description=Koha background worker (long_tasks queue) for %i
PartOf=koha@%i.target
Requires=koha-create-dirs@%i.service
After=koha@%i.target
StartLimitIntervalSec=60
StartLimitBurst=3
@ -13,7 +14,6 @@ WorkingDirectory=/var/lib/koha/%i
Environment=KOHA_CONF=/etc/koha/sites/%i/koha-conf.xml
Environment=KOHA_HOME=/usr/share/koha
Environment=PERL5LIB=/usr/share/koha/lib
ExecStartPre=+/usr/sbin/koha-create-dirs %i
ExecStart=/usr/share/koha/bin/workers/background_jobs_worker.pl --queue long_tasks
Restart=on-failure
RestartSec=5s

View File

@ -1,6 +1,7 @@
[Unit]
Description=Koha background worker (default queue) for %i
PartOf=koha@%i.target
Requires=koha-create-dirs@%i.service
After=koha@%i.target
StartLimitIntervalSec=60
StartLimitBurst=3
@ -13,7 +14,6 @@ WorkingDirectory=/var/lib/koha/%i
Environment=KOHA_CONF=/etc/koha/sites/%i/koha-conf.xml
Environment=KOHA_HOME=/usr/share/koha
Environment=PERL5LIB=/usr/share/koha/lib
ExecStartPre=+/usr/sbin/koha-create-dirs %i
ExecStart=/usr/share/koha/bin/workers/background_jobs_worker.pl --queue default
Restart=on-failure
RestartSec=5s

View File

@ -1,6 +1,7 @@
[Unit]
Description=Koha Z39.50/SRU server for %i
PartOf=koha@%i.target
Requires=koha-create-dirs@%i.service
After=koha@%i.target
ConditionPathExists=/etc/koha/sites/%i/z3950/config.xml
@ -13,7 +14,6 @@ Environment=KOHA_CONF=/etc/koha/sites/%i/koha-conf.xml
Environment=KOHA_HOME=/usr/share/koha
Environment=PERL5LIB=/usr/share/koha/lib
PIDFile=/var/run/koha/%i/z3950-responder.pid
ExecStartPre=+/usr/sbin/koha-create-dirs %i
ExecStart=/usr/share/koha/bin/z3950_responder.pl -c /etc/koha/sites/%i/z3950 -u %i-koha -p /var/run/koha/%i/z3950-responder.pid -D -d %i-koha-z3950 -l /var/log/koha/%i/z3950.log
Restart=on-failure
RestartSec=30s

View File

@ -1,6 +1,7 @@
[Unit]
Description=Koha Zebra indexing server for %i
PartOf=koha@%i.target
Requires=koha-create-dirs@%i.service
After=koha@%i.target
[Service]
@ -11,7 +12,6 @@ WorkingDirectory=/var/lib/koha/%i
Environment=KOHA_CONF=/etc/koha/sites/%i/koha-conf.xml
Environment=KOHA_HOME=/usr/share/koha
PIDFile=/var/run/koha/%i/zebra.pid
ExecStartPre=+/usr/sbin/koha-create-dirs %i
ExecStart=/usr/bin/zebrasrv -f /etc/koha/sites/%i/koha-conf.xml -p /var/run/koha/%i/zebra.pid -D
Restart=on-failure
RestartSec=30s