#!/bin/bash # MYP Backend - Produktions-Startskript # Startet die Flask-Anwendung mit Gunicorn für den Produktionsbetrieb set -e echo "=== MYP Backend - Produktionsstart ===" # Wechsel ins Backend-Verzeichnis SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" cd "$SCRIPT_DIR" # Hardgecodete Produktions-Umgebungsvariablen export FLASK_APP=app.py export FLASK_ENV=production export SECRET_KEY=7445630171969DFAC92C53CEC92E67A9CB2E00B3CB2F export DATABASE_PATH=instance/myp.db export LOG_LEVEL=INFO export JOB_CHECK_INTERVAL=60 export SOCKET_CHECK_INTERVAL=120 export PRINTERS='{"Drucker 1": {"ip": "192.168.0.100"}, "Drucker 2": {"ip": "192.168.0.101"}, "Drucker 3": {"ip": "192.168.0.102"}, "Drucker 4": {"ip": "192.168.0.103"}, "Drucker 5": {"ip": "192.168.0.104"}, "Drucker 6": {"ip": "192.168.0.106"}}' export TAPO_USERNAME=till.tomczak@mercedes-benz.com export TAPO_PASSWORD=744563017196A export HOST=0.0.0.0 export PORT=5000 export BACKEND_URL=http://localhost:5000 export UPLOAD_FOLDER=uploads export MAX_CONTENT_LENGTH=16777216 export DEBUG=false export TESTING=false export DEVELOPMENT=false export PYTHONPATH=${PYTHONPATH}:$(pwd) # 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} # Log-Verzeichnis erstellen mkdir -p logs # 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 " - Database: $DATABASE_PATH" echo " - Log Level: $LOG_LEVEL" echo "" # Aktiviere virtuelle Umgebung falls vorhanden if [ -d "venv" ]; then echo "Aktiviere virtuelle Umgebung..." source venv/bin/activate else echo "WARNUNG: Keine virtuelle Umgebung gefunden. Verwende System-Python." fi # 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