Files
RollCalcPython/docs/DEPLOYMENT_GUIDE.md
T

213 lines
3.6 KiB
Markdown

# Deployment Guide
Dieses Dokument beschreibt den empfohlenen Ablauf für das Deployment von RollCalc auf dem Beta- oder Produktivserver.
---
# Deployment Checklist
Vor Abschluss eines Deployments sollten alle folgenden Punkte erfüllt sein:
- [ ] Repository aktualisiert
- [ ] Python-Abhängigkeiten installiert
- [ ] `config/users.json` vorhanden und lesbar
- [ ] `build_info.json` geprüft bzw. aktualisiert
- [ ] RollCalc-Service erfolgreich neu gestartet
- [ ] Smoke-Test erfolgreich durchgeführt
---
# Voraussetzungen
Erwartete Serverstruktur:
- Projektverzeichnis
```text
/var/www/html
```
- Python Virtual Environment
```text
/opt/rollcalc-venv
```
- systemd-Service
```text
rollcalc.service
```
---
# Deployment
## 1. Repository aktualisieren
```bash
cd /var/www/html
git fetch origin
git switch develop/v0.4
git pull --ff-only origin develop/v0.4
```
---
## 2. Python-Abhängigkeiten aktualisieren
Neue Python-Abhängigkeiten werden ausschließlich in der virtuellen Umgebung installiert.
```bash
sudo /opt/rollcalc-venv/bin/python \
-m pip install -r requirements.txt
```
---
## 3. Benutzerdatei prüfen
Die Datei
```text
config/users.json
```
ist **nicht Bestandteil des Git-Repositories**.
Vor dem ersten Start nach einem Deployment sicherstellen:
- Datei vorhanden
- gültiges JSON
- mindestens ein Benutzer vorhanden
- für den Service-Benutzer lesbar
Empfohlene Dateirechte:
```bash
sudo chown martin:www-data config/users.json
sudo chmod 640 config/users.json
```
Neue Benutzer werden ausschließlich mit folgendem Werkzeug verwaltet:
```bash
python3 scripts/manage_users.py
```
---
## 4. Build-Informationen prüfen
Falls erforderlich:
```bash
./scripts/update_build_info.sh
```
Anschließend kontrollieren:
```bash
cat build_info.json
```
Die Build-Version wird unter anderem für den **What's New**-Dialog verwendet.
---
## 5. RollCalc neu starten
```bash
sudo systemctl restart rollcalc.service
sudo systemctl status rollcalc.service --no-pager
```
---
## 6. Smoke-Test
Nach jedem Deployment mindestens folgende Punkte prüfen:
- Login funktioniert
- Roll Calculator öffnet
- User Manual erreichbar
- Recent Changes erreichbar
- What's New erscheint bei neuer Version
- Beispielberechnung durchführen
- Load Optimizer funktioniert
---
# Fehlerdiagnose
## Service-Status
```bash
sudo systemctl status rollcalc.service --no-pager
```
## Journal anzeigen
```bash
sudo journalctl -u rollcalc.service -n 100 --no-pager
```
## Benutzerdatei prüfen
```bash
ls -l config/users.json
sudo -u www-data test -r config/users.json && echo "users.json readable"
```
---
# Benutzerverwaltung
Die Benutzerverwaltung erfolgt ausschließlich über:
```bash
python3 scripts/manage_users.py
```
Die Datei
```text
config/users.json
```
wird **nicht versioniert** und muss auf jedem Zielsystem separat gepflegt werden.
Die Datei darf niemals in das Git-Repository eingecheckt werden.
---
# Rollback
Vor jedem Deployment empfiehlt es sich, den aktuellen Commit zu notieren:
```bash
git rev-parse HEAD
```
Rollback auf einen früheren Stand:
```bash
git switch develop/v0.4
git reset --hard <Commit-ID>
sudo systemctl restart rollcalc.service
```
---
# Wartungshinweise
- Neue Python-Abhängigkeiten immer über die virtuelle Umgebung installieren.
- `config/users.json` regelmäßig sichern.
cp config/users.json backups/users_$(date +%F).json
- `build_info.json` vor einem Release aktualisieren.
- Nach Änderungen an der Authentifizierung die Benutzerverwaltung testen.
- Nach Änderungen am Help-System User Manual und Recent Changes prüfen.
- Nach Änderungen an Berechnungen mindestens einen vollständigen Rechentest durchführen.