Files

56 lines
1.6 KiB
Markdown

# Flask Deploy Pattern (PersoEnt, 19.07.2026)
## venv anlegen (Ubuntu 24.04)
```bash
apt-get install -y python3.12-venv
python3 -m venv /var/www/<projekt>/backend/venv
/var/www/<projekt>/backend/venv/bin/pip install flask flask-cors requests
```
## systemd Service
`/etc/systemd/system/<projekt>-api.service`:
```ini
[Unit]
Description=<Projekt> API (Flask)
After=network.target
[Service]
User=www-data
Group=www-data
WorkingDirectory=/var/www/<projekt>/backend
Environment=PATH=/var/www/<projekt>/backend/venv/bin
ExecStart=/var/www/<projekt>/backend/venv/bin/python app.py
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
```
## Kritisch: Berechtigungen nach jedem File-Edit!
`patch`/`write_file`/`sed` ändern den Owner → `chown www-data:www-data app.py` VOR `systemctl restart`!
Sonst: `Permission denied` + Restart-Loop.
## Nginx (in sites-enabled/<domain>)
```nginx
location /api/ {
proxy_pass http://127.0.0.1:5000/api/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
```
`nginx -t && systemctl reload nginx`
## Token in Code schreiben (NICHT via sed!)
⚠️ `sed -i "s|^PB_TOKEN = .*|PB_TOKEN = \"$TOKEN\"|"` schneidet langen Token ab (Terminal kürzt bei Display, aber das Problem: sed ersetzt mit gekürztem Wert wenn Variable im Heredoc/SSH-Kontext kaputt ist).
**Sicher:** Python-Script nutzen:
```python
import re
token = "VOLLER_TOKEN"
with open('app.py') as f: c = f.read()
c = re.sub(r'PB_TOKEN = ".*"', f'PB_TOKEN = "{token}"', c)
with open('app.py','w') as f: f.write(c)
```