56 lines
1.5 KiB
Bash
56 lines
1.5 KiB
Bash
#!/bin/bash
|
|
|
|
# MYP Backend - Produktions-Startskript
|
|
# Startet die Flask-Anwendung mit Gunicorn für den Produktionsbetrieb
|
|
|
|
set -e
|
|
|
|
echo "=== MYP Backend - Produktionsstart ==="
|
|
|
|
# Konfiguration
|
|
WORKERS=${WORKERS:-4}
|
|
BIND_ADDRESS=${BIND_ADDRESS:-"0.0.0.0:5000"}
|
|
TIMEOUT=${TIMEOUT:-30}
|
|
KEEP_ALIVE=${KEEP_ALIVE:-5}
|
|
MAX_REQUESTS=${MAX_REQUESTS:-1000}
|
|
MAX_REQUESTS_JITTER=${MAX_REQUESTS_JITTER:-100}
|
|
|
|
# Umgebungsvariablen
|
|
export FLASK_ENV=production
|
|
export PYTHONPATH=${PYTHONPATH}:$(pwd)
|
|
|
|
# Log-Verzeichnis erstellen
|
|
mkdir -p logs
|
|
|
|
# Prüfe, ob alle erforderlichen Umgebungsvariablen gesetzt sind
|
|
if [ -z "$SECRET_KEY" ]; then
|
|
echo "WARNUNG: SECRET_KEY ist nicht gesetzt. Verwende einen generierten Schlüssel."
|
|
export SECRET_KEY=$(python3 -c "import secrets; print(secrets.token_hex(32))")
|
|
fi
|
|
|
|
# Produktionsparameter ausgeben
|
|
echo "Konfiguration:"
|
|
echo " - Workers: $WORKERS"
|
|
echo " - Bind: $BIND_ADDRESS"
|
|
echo " - Timeout: $TIMEOUT Sekunden"
|
|
echo " - Max Requests: $MAX_REQUESTS"
|
|
echo " - Environment: $FLASK_ENV"
|
|
echo ""
|
|
|
|
# Gunicorn starten
|
|
echo "Starte Gunicorn-Server..."
|
|
exec gunicorn \
|
|
--workers=$WORKERS \
|
|
--worker-class=sync \
|
|
--bind=$BIND_ADDRESS \
|
|
--timeout=$TIMEOUT \
|
|
--keep-alive=$KEEP_ALIVE \
|
|
--max-requests=$MAX_REQUESTS \
|
|
--max-requests-jitter=$MAX_REQUESTS_JITTER \
|
|
--preload \
|
|
--access-logfile=logs/access.log \
|
|
--error-logfile=logs/error.log \
|
|
--log-level=info \
|
|
--capture-output \
|
|
--enable-stdio-inheritance \
|
|
wsgi:application |