75 lines
2.2 KiB
Bash
Executable File
75 lines
2.2 KiB
Bash
Executable File
#!/bin/bash
|
|
# start_email_api.sh
|
|
# Dieses Script startet die S3 Email Downloader REST API in einer virtuellen Python-Umgebung
|
|
|
|
# Verzeichnis, in dem sich das Script befindet
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
cd "$SCRIPT_DIR"
|
|
|
|
# Name der virtuellen Umgebung
|
|
VENV_NAME="venv"
|
|
|
|
# Python-Executable (falls spezifische Version benötigt wird)
|
|
PYTHON_EXEC="python3"
|
|
|
|
# API Port
|
|
PORT=${EMAIL_API_PORT:-5000}
|
|
|
|
# Umgebungsvariablen Datei
|
|
ENV_FILE=".env"
|
|
|
|
# Prüfen, ob virtuelle Umgebung existiert
|
|
if [ ! -d "$VENV_NAME" ]; then
|
|
echo "Virtuelle Umgebung wird erstellt..."
|
|
$PYTHON_EXEC -m venv "$VENV_NAME"
|
|
if [ $? -ne 0 ]; then
|
|
echo "Fehler beim Erstellen der virtuellen Umgebung!"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
# Virtuelle Umgebung aktivieren
|
|
source "$VENV_NAME/bin/activate"
|
|
|
|
# Abhängigkeiten installieren, falls erforderlich
|
|
echo "Abhängigkeiten werden installiert..."
|
|
pip install --upgrade pip
|
|
pip install boto3 flask python-dotenv gunicorn
|
|
|
|
# Prüfen, ob .env-Datei existiert
|
|
if [ ! -f "$ENV_FILE" ]; then
|
|
echo "WARNUNG: $ENV_FILE nicht gefunden!"
|
|
echo "Bitte erstellen Sie eine .env-Datei mit den erforderlichen Konfigurationen."
|
|
echo "Beispiel:"
|
|
echo "API_TOKEN=ihr_geheimer_token"
|
|
echo "MAIL_DIR=./mail"
|
|
echo "AWS_REGION=us-east-2"
|
|
echo "AWS_ACCESS_KEY_ID=your_access_key"
|
|
echo "AWS_SECRET_ACCESS_KEY=your_secret_key"
|
|
echo "DOMAIN_1=example.com"
|
|
echo "DOMAIN_1_BUCKET=example-bucket"
|
|
echo "DOMAIN_1_USERNAMES=user1,user2,user3"
|
|
exit 1
|
|
fi
|
|
|
|
# Überprüfen, ob API_TOKEN in der .env-Datei gesetzt ist
|
|
if ! grep -q "API_TOKEN" "$ENV_FILE"; then
|
|
echo "WARNUNG: API_TOKEN nicht in $ENV_FILE gefunden!"
|
|
echo "Die API wird ohne Token-Schutz gestartet. Dies ist unsicher für Produktionsumgebungen."
|
|
read -p "Möchten Sie fortfahren? (j/n): " choice
|
|
if [[ ! "$choice" =~ ^[jJyY]$ ]]; then
|
|
echo "Abbruch."
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
# Prüfen, ob das Python-Script existiert
|
|
API_SCRIPT="s3_email_processor_api.py"
|
|
if [ ! -f "$API_SCRIPT" ]; then
|
|
echo "Fehler: $API_SCRIPT nicht gefunden!"
|
|
exit 1
|
|
fi
|
|
|
|
# API im Produktionsmodus mit Gunicorn starten
|
|
echo "Starte S3 Email Downloader API auf Port $PORT..."
|
|
exec gunicorn --bind "0.0.0.0:$PORT" --workers 2 "s3_email_processor_api:app" |