1.6 KiB
1.6 KiB
Flask Deploy Pattern (PersoEnt, 19.07.2026)
venv anlegen (Ubuntu 24.04)
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:
[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/)
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:
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)