@@ -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 1–2 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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user