Init stops-import, DB-Env
Deploy PBT / deploy (push) Failing after 16s

This commit is contained in:
2026-09-10 21:58:22 +02:00
parent 2a6e9c690b
commit 158311a329
6 changed files with 50 additions and 10 deletions
+22 -7
View File
@@ -31,8 +31,9 @@ Nach dem Anlegen der Tabellen den Snapshot in die DB laden:
flask import-stops # FLASK_APP=app.py bzw. im Projektverzeichnis
```
Der Import ist idempotent (Upsert) und braucht kein Internet. Beim Deploy per
systemd einmalig ausführen, danach nur wenn der Snapshot aktualisiert wurde.
Der Import ist idempotent (Upsert) und braucht kein Internet. Im Produktivbetrieb
übernimmt das die Unit `pbt-import-stops.service` (wird bei jedem Deploy
angestoßen, s. u.).
Snapshot neu von OpenStreetMap holen (dauert 12 min, braucht Netzugang):
@@ -44,15 +45,29 @@ flask import-stops
## Produktivbetrieb mit systemd + Gunicorn
1. Projekt nach `/opt/pbt` kopieren, virtuelle Umgebung dort anlegen (s. oben).
2. `pbt.service` nach `/etc/systemd/system/pbt.service` kopieren, DB-URL und
Secret-Key darin anpassen.
3. Aktivieren:
2. Secrets anlegen (nicht im Repo):
```bash
systemctl daemon-reload
systemctl enable --now pbt
sudo install -d -m 750 -o root -g root /etc/pbt
sudo cp /opt/pbt/pbt.env.example /etc/pbt/pbt.env
sudo chmod 640 /etc/pbt/pbt.env
sudo $EDITOR /etc/pbt/pbt.env # echte PBT_DATABASE_URL + PBT_SECRET_KEY
```
3. Beide Units installieren (lesen `/etc/pbt/pbt.env`):
```bash
sudo cp /opt/pbt/pbt.service /opt/pbt/pbt-import-stops.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now pbt
sudo systemctl start pbt-import-stops.service # Haltestellen laden
systemctl status pbt
```
Die App lauscht dann intern auf `127.0.0.1:8000`.
4. Damit der Deploy-User (`deploy`) beim CI-Deploy neu starten und den
Haltestellen-Import anstoßen darf, in `/etc/sudoers.d/pbt-deploy`:
```
deploy ALL=(root) NOPASSWD: /usr/bin/systemctl restart pbt, /usr/bin/systemctl start pbt-import-stops.service
```
Der Import selbst läuft als `www-data` und bekommt die DB-URL aus
`/etc/pbt/pbt.env` die Credentials liegen nie beim Deploy-User.
## Caddy-Eintrag