Lizenzserver-Deployment: install-license.sh/update-license.sh + systemd/nginx-Vorlagen

Fork von install.sh/update.sh/tesm.service/nginx-Site (TESM selbst),
beschraenkt auf /srv/tesm-license -- deployt ausschliesslich den in Phase 2
gebauten Master-Lizenzserver, laesst eine evtl. auf demselben Host
vorhandene TESM-Installation komplett unberuehrt (eigener Pfad-/Env-Var-
Namespace, siehe app.py). Gleiches Backup+Health-Check+Rueckroll-
Sicherheitsnetz wie bei TESMs eigenem Installer.

Teil von Phase 3 (Infrastruktur), siehe Plan toasty-twirling-hickey.md.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-23 10:15:02 +02:00
co-authored by Claude Sonnet 5
parent 83eb0be3b1
commit 3f5d85c7ee
4 changed files with 273 additions and 0 deletions
+27
View File
@@ -0,0 +1,27 @@
[Unit]
Description=TESM Lizenzserver (Master)
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/srv/tesm-license
# Analog zu TESM_WEB_PROCESS bei TESM selbst -- markiert diesen Prozess als
# den echten Web-Dienst (startet den Lizenz-Heartbeat- und den Auditlog-
# Archivierungs-Thread genau einmal). Anders als bei TESM importiert hier
# kein Hilfsskript app.py periodisch als Modul (kein Geräte-Polling auf
# dem Lizenzserver) -- das Flag bleibt trotzdem gesetzt, für den Fall
# künftiger Hilfsskripte und zur Konsistenz mit dem TESM-Muster.
Environment=TESM_LICENSE_WEB_PROCESS=1
# Kein WebSocket-Terminal wie bei TESM -- gthread/--timeout 0 daher nicht
# nötig, ein paar Threads reichen für die parallele Aktivierungs-/
# Heartbeat-API mehrerer Kunden.
# "--bind 127.0.0.1:5000" wie bei TESM: nur über den nginx-Reverse-Proxy
# von außen erreichbar.
ExecStart=/srv/tesm-license/venv/bin/gunicorn --workers 1 --threads 8 \
--bind 127.0.0.1:5000 app:app
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target