diff --git a/debian/systemd/koha-es-indexer@.service b/debian/systemd/koha-es-indexer@.service index 294edbacae..1de5c6bc7c 100644 --- a/debian/systemd/koha-es-indexer@.service +++ b/debian/systemd/koha-es-indexer@.service @@ -1,8 +1,10 @@ [Unit] Description=Koha Elasticsearch indexer daemon for %i +Documentation=man:koha-es-indexer(8) PartOf=koha@%i.target Requires=koha-create-dirs@%i.service -After=koha@%i.target koha-create-dirs@%i.service +Before=koha@%i.target +After=koha-create-dirs@%i.service StartLimitIntervalSec=60 StartLimitBurst=3 @@ -10,6 +12,7 @@ StartLimitBurst=3 Type=simple User=%i-koha Group=%i-koha +SyslogIdentifier=%i-koha-es-indexer WorkingDirectory=/var/lib/koha/%i Environment=KOHA_CONF=/etc/koha/sites/%i/koha-conf.xml Environment=KOHA_HOME=/usr/share/koha diff --git a/debian/systemd/koha-indexer@.service b/debian/systemd/koha-indexer@.service index 2818161f5b..0bc9f92e7e 100644 --- a/debian/systemd/koha-indexer@.service +++ b/debian/systemd/koha-indexer@.service @@ -1,8 +1,10 @@ [Unit] Description=Koha Zebra indexer daemon for %i +Documentation=man:koha-indexer(8) PartOf=koha@%i.target Requires=koha-create-dirs@%i.service -After=koha@%i.target koha-zebra@%i.service koha-create-dirs@%i.service +Before=koha@%i.target +After=koha-zebra@%i.service koha-create-dirs@%i.service StartLimitIntervalSec=60 StartLimitBurst=3 @@ -10,6 +12,7 @@ StartLimitBurst=3 Type=simple User=%i-koha Group=%i-koha +SyslogIdentifier=%i-koha-indexer WorkingDirectory=/var/lib/koha/%i Environment=KOHA_CONF=/etc/koha/sites/%i/koha-conf.xml Environment=KOHA_HOME=/usr/share/koha diff --git a/debian/systemd/koha-plack@.service b/debian/systemd/koha-plack@.service index 1a2e72550b..f7908ad703 100644 --- a/debian/systemd/koha-plack@.service +++ b/debian/systemd/koha-plack@.service @@ -1,8 +1,10 @@ [Unit] Description=Koha Plack server for %i +Documentation=man:koha-plack(8) PartOf=koha@%i.target Requires=koha-create-dirs@%i.service -After=koha@%i.target koha-create-dirs@%i.service +Before=koha@%i.target +After=koha-create-dirs@%i.service StartLimitIntervalSec=60 StartLimitBurst=3 @@ -10,6 +12,7 @@ StartLimitBurst=3 Type=forking User=%i-koha Group=%i-koha +SyslogIdentifier=%i-koha-plack WorkingDirectory=/var/lib/koha/%i Environment=KOHA_CONF=/etc/koha/sites/%i/koha-conf.xml Environment=KOHA_HOME=/usr/share/koha @@ -21,7 +24,6 @@ ExecStart=/usr/bin/starman \ -M FindBin \ --max-requests ${PLACK_MAX_REQUESTS} \ --workers ${PLACK_WORKERS} \ - --user %i-koha --group %i-koha \ --pid /run/koha/%i/plack.pid \ --daemonize \ --access-log /var/log/koha/%i/plack.log \ @@ -30,6 +32,10 @@ ExecStart=/usr/bin/starman \ --listen /run/koha/%i/plack.sock \ ${PLACK_PSGIFILE} ExecReload=/bin/kill -HUP $MAINPID +# Starman shuts down gracefully on QUIT (TERM is immediate); matches the +# QUIT/30/KILL/5 retry schedule the SysV path used. +KillSignal=SIGQUIT +TimeoutStopSec=30s ProtectSystem=full ProtectHome=yes PrivateTmp=yes diff --git a/debian/systemd/koha-sip@.service b/debian/systemd/koha-sip@.service index c2167af331..bc3c73bafe 100644 --- a/debian/systemd/koha-sip@.service +++ b/debian/systemd/koha-sip@.service @@ -1,8 +1,10 @@ [Unit] Description=Koha SIP server for %i +Documentation=man:koha-sip(8) PartOf=koha@%i.target Requires=koha-create-dirs@%i.service -After=koha@%i.target koha-create-dirs@%i.service +Before=koha@%i.target +After=koha-create-dirs@%i.service AssertPathExists=/etc/koha/sites/%i/SIPconfig.xml StartLimitIntervalSec=60 @@ -12,6 +14,7 @@ StartLimitBurst=3 Type=simple User=%i-koha Group=%i-koha +SyslogIdentifier=%i-koha-sip WorkingDirectory=/var/lib/koha/%i Environment=KOHA_CONF=/etc/koha/sites/%i/koha-conf.xml Environment=KOHA_HOME=/usr/share/koha diff --git a/debian/systemd/koha-worker-long_tasks@.service b/debian/systemd/koha-worker-long_tasks@.service index e58119e401..b4024e2732 100644 --- a/debian/systemd/koha-worker-long_tasks@.service +++ b/debian/systemd/koha-worker-long_tasks@.service @@ -1,8 +1,10 @@ [Unit] Description=Koha background worker (long_tasks queue) for %i +Documentation=man:koha-worker(8) PartOf=koha@%i.target Requires=koha-create-dirs@%i.service -After=koha@%i.target koha-create-dirs@%i.service +Before=koha@%i.target +After=koha-create-dirs@%i.service StartLimitIntervalSec=60 StartLimitBurst=3 @@ -10,6 +12,7 @@ StartLimitBurst=3 Type=simple User=%i-koha Group=%i-koha +SyslogIdentifier=%i-koha-worker-long_tasks WorkingDirectory=/var/lib/koha/%i Environment=KOHA_CONF=/etc/koha/sites/%i/koha-conf.xml Environment=KOHA_HOME=/usr/share/koha @@ -19,6 +22,10 @@ ProtectSystem=full ProtectHome=yes PrivateTmp=yes NoNewPrivileges=yes +# The worker forks a child per job: signal only the parent and give running +# jobs a chance to finish before the remaining processes are killed. +KillMode=mixed +TimeoutStopSec=120s Restart=on-failure RestartSec=5s diff --git a/debian/systemd/koha-worker@.service b/debian/systemd/koha-worker@.service index fef0fee9cb..25d8ddd5ca 100644 --- a/debian/systemd/koha-worker@.service +++ b/debian/systemd/koha-worker@.service @@ -1,8 +1,10 @@ [Unit] Description=Koha background worker (default queue) for %i +Documentation=man:koha-worker(8) PartOf=koha@%i.target Requires=koha-create-dirs@%i.service -After=koha@%i.target koha-create-dirs@%i.service +Before=koha@%i.target +After=koha-create-dirs@%i.service StartLimitIntervalSec=60 StartLimitBurst=3 @@ -10,6 +12,7 @@ StartLimitBurst=3 Type=simple User=%i-koha Group=%i-koha +SyslogIdentifier=%i-koha-worker WorkingDirectory=/var/lib/koha/%i Environment=KOHA_CONF=/etc/koha/sites/%i/koha-conf.xml Environment=KOHA_HOME=/usr/share/koha @@ -19,6 +22,10 @@ ProtectSystem=full ProtectHome=yes PrivateTmp=yes NoNewPrivileges=yes +# The worker forks a child per job: signal only the parent and give running +# jobs a chance to finish before the remaining processes are killed. +KillMode=mixed +TimeoutStopSec=120s Restart=on-failure RestartSec=5s diff --git a/debian/systemd/koha-z3950@.service b/debian/systemd/koha-z3950@.service index 791c2044fa..f45e67a5b6 100644 --- a/debian/systemd/koha-z3950@.service +++ b/debian/systemd/koha-z3950@.service @@ -1,8 +1,10 @@ [Unit] Description=Koha Z39.50/SRU server for %i +Documentation=man:koha-z3950-responder(8) PartOf=koha@%i.target Requires=koha-create-dirs@%i.service -After=koha@%i.target koha-create-dirs@%i.service +Before=koha@%i.target +After=koha-create-dirs@%i.service StartLimitIntervalSec=60 StartLimitBurst=3 @@ -10,6 +12,7 @@ StartLimitBurst=3 Type=forking User=%i-koha Group=%i-koha +SyslogIdentifier=%i-koha-z3950 WorkingDirectory=/var/lib/koha/%i Environment=KOHA_CONF=/etc/koha/sites/%i/koha-conf.xml Environment=KOHA_HOME=/usr/share/koha diff --git a/debian/systemd/koha-zebra@.service b/debian/systemd/koha-zebra@.service index d78af5fd7f..afe8bd3759 100644 --- a/debian/systemd/koha-zebra@.service +++ b/debian/systemd/koha-zebra@.service @@ -1,8 +1,10 @@ [Unit] Description=Koha Zebra indexing server for %i +Documentation=man:koha-zebra(8) PartOf=koha@%i.target Requires=koha-create-dirs@%i.service -After=koha@%i.target koha-create-dirs@%i.service +Before=koha@%i.target +After=koha-create-dirs@%i.service StartLimitIntervalSec=60 StartLimitBurst=3 @@ -10,13 +12,14 @@ StartLimitBurst=3 Type=forking User=%i-koha Group=%i-koha +SyslogIdentifier=%i-koha-zebra WorkingDirectory=/var/lib/koha/%i Environment=KOHA_CONF=/etc/koha/sites/%i/koha-conf.xml Environment=KOHA_HOME=/usr/share/koha PIDFile=/run/koha/%i/zebra.pid ExecStartPre=+/usr/sbin/koha-generate-env zebra %i # Clean up leftover Zebra socket files so Zebra can rebind on startup. -ExecStartPre=+/bin/rm -f /run/koha/%i/bibliosocket /run/koha/%i/authoritysocket +ExecStartPre=+/bin/sh -c 'rm -f /run/koha/%i/*socket' EnvironmentFile=-/run/koha/%i/zebra.env ExecStart=/usr/bin/zebrasrv \ -v ${ZEBRA_LOGLEVELS} \ diff --git a/debian/systemd/koha@.target b/debian/systemd/koha@.target index be7a8dd40e..04ce552785 100644 --- a/debian/systemd/koha@.target +++ b/debian/systemd/koha@.target @@ -2,6 +2,7 @@ Description=Koha ILS instance %i After=network.target memcached.service mysql.service PartOf=koha.target +Before=koha.target [Install] WantedBy=koha.target