Projektarbeit-MYP/backend/start-production.sh

81 lines
2.4 KiB
Bash

#!/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