Projektarbeit-MYP/PYTHON311_SERVICE_UPDATE.md

5.7 KiB

MYP Installer - Python 3.11 Service Update

Übersicht der Änderungen

Das myp_installer.sh Skript wurde aktualisiert, um sicherzustellen, dass alle Services explizit Python 3.11 verwenden und alte Services ordnungsgemäß entfernt werden.

Wichtige Änderungen

1. Neue Funktionen hinzugefügt

remove_old_services()

  • Entfernt systematisch alte MYP Services
  • Unterstützt Backend-, Kiosk- und alle Services
  • Stoppt und deaktiviert Services sicher
  • Services: myp.service, myp-platform.service, myp-backend.service, myp-kiosk-browser.service, etc.

create_backend_service()

  • Erstellt neuen Backend-Service mit explizitem Python 3.11 Pfad
  • Verwendet python3.11 im ExecStart-Befehl
  • Konfiguriert korrekte Umgebungsvariablen
  • Setzt Sicherheitseinstellungen

create_kiosk_service()

  • Erstellt Kiosk-Browser-Service
  • Abhängig vom Backend-Service
  • Wartet auf Backend-Verfügbarkeit vor Start

manage_services()

  • Vollständiges Service-Management-Interface
  • Start, Stopp, Neustart, Status, Logs
  • Aktivierung/Deaktivierung von Services

show_logs()

  • Umfassendes Log-Anzeige-System
  • Systemd-Logs und Application-Logs
  • Live-Modus und Fehler-Logs

2. Service-Konfiguration aktualisiert

Backend Service (myp.service)

[Unit]
Description=MYP Reservation Platform Backend (Python 3.11)
After=network.target
Wants=network.target

[Service]
Type=simple
User=$USER
Group=$USER
WorkingDirectory=$PROJECT_DIR/backend/app
Environment=PYTHONPATH=$PROJECT_DIR/backend/app
Environment=FLASK_ENV=production
Environment=FLASK_APP=app.py
Environment=PYTHONUNBUFFERED=1
ExecStart=$PROJECT_DIR/backend/venv/bin/python3.11 app.py --host 0.0.0.0 --port 443 --cert certs/backend.crt --key certs/backend.key
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
SyslogIdentifier=myp-backend

# Security settings
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ProtectHome=true
ReadWritePaths=$PROJECT_DIR/backend/app/logs
ReadWritePaths=$PROJECT_DIR/backend/app/database

[Install]
WantedBy=multi-user.target

Kiosk Service (myp-kiosk-browser.service)

[Unit]
Description=MYP Kiosk Browser - 3D Printer Management Kiosk Interface (Python 3.11 Backend)
After=network.target graphical-session.target myp.service
Requires=myp.service
PartOf=myp.service

[Service]
Type=simple
User=$USER
Group=$USER
Environment=DISPLAY=:0
Environment=XAUTHORITY=/home/$USER/.Xauthority
ExecStartPre=/bin/bash -c 'until curl -k -s https://localhost:443/ > /dev/null; do sleep 2; done'
ExecStart=/usr/bin/chromium-browser --kiosk --disable-infobars --disable-session-crashed-bubble --disable-translate --no-first-run --disable-features=VizDisplayCompositor --start-fullscreen --autoplay-policy=no-user-gesture-required https://localhost:443/
Restart=always
RestartSec=10
KillMode=mixed
TimeoutStopSec=30

[Install]
WantedBy=graphical-session.target

3. Virtual Environment Verbesserungen

  • Explizite Erstellung mit python3.11 -m venv
  • Prüfung ob existierendes venv Python 3.11 verwendet
  • Automatische Neuerstellung falls falsche Python-Version

4. Installationsprozess optimiert

Backend Installation (install_backend())

  1. Python 3.11 Verfügbarkeit prüfen
  2. Virtual Environment mit Python 3.11 erstellen/prüfen
  3. Dependencies installieren
  4. Verzeichnisse erstellen
  5. Datenbank mit Python 3.11 initialisieren
  6. SSL-Zertifikate erstellen
  7. Alte Services entfernen
  8. Neuen Backend-Service erstellen
  9. Kiosk-Konfiguration (optional)

Produktions-Installation (install_production_backend())

  1. Python 3.11 Virtual Environment
  2. Requirements installieren
  3. Zertifikate kopieren
  4. Alte Services entfernen
  5. Neuen Service mit Python 3.11 erstellen
  6. Datenbank mit Python 3.11 initialisieren
  7. Kiosk-Konfiguration
  8. Kiosk-Service erstellen

5. Service-Dateien aktualisiert

backend/myp.service

  • ExecStart verwendet jetzt python3.11
  • PYTHONUNBUFFERED=1 hinzugefügt
  • Beschreibung aktualisiert

backend/install/myp.service

  • ExecStart verwendet jetzt python3.11
  • Beschreibung aktualisiert

Verwendung

Neue Installation

./myp_installer.sh
# Wähle Option für Backend-Installation
# Services werden automatisch mit Python 3.11 konfiguriert

Service-Management

./myp_installer.sh
# Wähle Option 13: "Services verwalten"
# Vollständiges Service-Management verfügbar

Log-Anzeige

./myp_installer.sh
# Wähle Option 12: "Logs anzeigen"
# Verschiedene Log-Optionen verfügbar

Vorteile

  1. Konsistenz: Alle Services verwenden explizit Python 3.11
  2. Sauberkeit: Alte Services werden ordnungsgemäß entfernt
  3. Sicherheit: Moderne systemd Security-Features aktiviert
  4. Wartbarkeit: Zentrale Service-Management-Funktionen
  5. Debugging: Umfassendes Logging-System
  6. Automatisierung: Vollständig automatisierte Installation

Kompatibilität

  • Funktioniert mit bestehenden Installationen
  • Entfernt automatisch alte/inkompatible Services
  • Behält Datenbank und Konfiguration bei
  • Unterstützt sowohl Entwicklungs- als auch Produktionsumgebungen

Fehlerbehebung

Service startet nicht

# Status prüfen
systemctl status myp.service

# Logs anzeigen
journalctl -u myp.service -f

# Python 3.11 verfügbar?
which python3.11
python3.11 --version

Virtual Environment Probleme

# Virtual Environment neu erstellen
rm -rf backend/venv
python3.11 -m venv backend/venv
source backend/venv/bin/activate
pip install -r backend/requirements.txt

Alte Services entfernen

# Manuell alte Services entfernen
sudo systemctl stop myp-platform.service
sudo systemctl disable myp-platform.service
sudo rm /etc/systemd/system/myp-platform.service
sudo systemctl daemon-reload