Benutzer-Werkzeuge

Webseiten-Werkzeuge


public:python_webserver

Tipps zu Python und Webserver mit Python

Python Web-Frameworks

MySql

Flask

CAN-Data Visualizer

Python Libs

NumPy

pandas

matplotlib

Virtual Env

python env

sudo apt-get install python3-venv

mkdir dev/test1                     # Projekt-Ordner anlegen und in diesen wechseln
cd dev/test1
python3 -m venv venv                # die virtuelle Umgebung erzeugen (Ordner)

source venv/bin/activate            # und aktivieren
....
deactivate                          # und wieder verlassen.

und für die Installation von flask, matplotlib, pandas und numpy wurden noch folgendes benötigt: - sudo apt-get install libjpeg-dev zlib1g-dev (damit pillow wegen matplotlib installiert werden kann)

History Installation

 2017  source venv/bin/activate
 2018  pip3 list
 2019  python3 --version                        => Python 3.6.9
 2020  python3 -m pip install numpy    **
 2021  python3 -m pip install matplotlib  **
 2022  python3 -m pip install wheel             => war dies wirklich notwendig? keine Ahnung
 2023  python3 -m pip install matplotlib **
 2024  sudo apt-get install libjpeg-dev zlib1g-dev
 2025  python3 -m pip install matplotlib  **
 2029  python3 -m pip install pandas  **
 2031  python3 -m pip install flask **
 2032  flask --help

** = das sind die eigentliche benötigte Pakete!   Die anderen werden im Fehlerfall benötigt

Hinweise WSL2 Ubuntu18.04:

  • kommt die Meldung mit library oder headerfiles „zlib not found“ dann muss noch
    sudo apt-get install zlib1g-dev

    installiert werden

  • kommt no library oder Header found for: jpeg
    sudo apt-get install libjpeg-dev

    installiert werden.

  • und bei:
    ModuleNotFoundError: No module named 'setuptools_rust'
      * Start in WSL am besten mit:<code>flask run -h 0.0.0.0

    Hierfür muss auch die Umgegungsvariable gesetzt sein: export FLASK_APP=app.py oder das Python-Skript ausführbar machen und direkt aufrufen und dann die Parameter in main ändern.

dann: pip install -U pip setuptools ausführen</code>

um SSL zu aktivieren war folgendes noch notwendig:

 2051  python3 -m pip install cryptography
 2052  pip install -U pip setuptools
 2053  python3 -m pip install cryptography

damit es dann bei app.run mit dem Kontext: „ ssl_context='adhoc',“ als SSL läuft.

if __name__ == "__main__":
    app.run(port = 8089, host = "0.0.0.0", ssl_context='adhoc', debug = True)
    
 * Running on https://83.219.65.212:8889/

Und hier zum Abschluss noch die Requirements, so das meine Flask App läuft:<code>(venv) andreas@h2859785:~/dev/flask$ cat requirements.txt
cffi==1.15.0
click==8.0.3
cryptography==36.0.0
cycler==0.11.0
dataclasses==0.8
Flask==2.0.2
importlib-metadata==4.8.2
itsdangerous==2.0.1
Jinja2==3.0.3
kiwisolver==1.3.1
MarkupSafe==2.0.1
matplotlib==3.3.4
numpy==1.19.5
pandas==1.1.5
Pillow==8.4.0
pkg_resources==0.0.0
pycparser==2.21
pyparsing==3.0.6
python-dateutil==2.8.2
pytz==2021.3
six==1.16.0
typing_extensions==4.0.1
Werkzeug==2.0.2
zipp==3.6.0

conda

VS-Code Remote Debugging Flask

Um eine Flask Applikation zu Debuggen (Remote) sind folgende Schritte erforderlich:

  • Eine SSH Remote Verbindung zum Server einrichten
  • Wenn mit einer virtuellen Python Umgebung auf dem Server gearbeitet wird muss man diese in vscode auch einrichten:
    • Da ich Pyhton venv verwende, wurde bei mir die settings.json mit folgendem Eintrag erzeugt: (STRG+Shift+P ⇒ Select Python Interpreter ⇒ Pfad zur virtuelle Python Umgebung angeben)
      {
          "python.pythonPath": "/home/andreas/dev/flask/venv/bin/python"
      }

      oder

      {
          "python.pythonPath": "/home/pi/dev/flask/venv/bin/python"
      }
  • Beim Starten der Debugsitzung wird der lokale Server Port auf den lokalen Port vom Host umgeleitet.
    (venv) andreas@mydomain.de:~/dev/flask/flaskCanGraph$  cd /home/andreas/dev/flask/flaskCanGraph ; /usr/bin/env /home/andreas/dev/flask/venv/bin/python /home/andreas/.vscode-server/extensions/ms-python.python-2021.12.1559732655/pythonFiles/lib/python/debugpy/launcher 43491 -- -m flask run --no-debugger --no-reload 
     * Serving Flask app 'app.py' (lazy loading)
     * Environment: development
     * Debug mode: off
     * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

Sonstige Hinweise:

  • Python Plug-in muss installiert sein (die Abfrage kommt automatisch, falls es noch nicht installiert ist wenn einen Python-Datei geöffnet wird.
  • Eventuell noch den Compiler Auswählen mit: CTRL+SHIFT+P ⇒ „python: Select interpreter“ ⇒ aus dem venv auswählen
  • Beim Starten vom Debuggen kann man auswählen, ob die Vorschau im Editor (vereinfachter Browser) erfolgen soll. Falls dieser gewählt wurde, kann aber nicht HTTPS verwendet werden
    if __name__ == "__main__":
        #app.run(port = 8089, host= "0.0.0.0", debug = True, ssl_context='adhoc')
        app.run(port = 8089, host= "0.0.0.0", debug = True)  # nur für vscode Remotedebugging beim integrierten Fenster (einfacher Browser) kann kein SSSL

VS-Code Remote Programmieren/Debugging

Hier wird nochmal das Einrichten von vscode für Remote Programmierung / Debugging mit dem Raspi erklärt. (C-Programmierung):

  • Eine SSH Remote Verbindung zum Server einrichten
    • „connect to Host“ auswählen (links unten in der Statusleiste auf das Verbindungssymbol klicken
    • Im Pop-Up dann „add new SSH-Host“ auswählen und folgendes eintragen:
      „ssh pi@192.168.178.84 -A“
    • dann das bestehende ssh-Config file auswählen
    • ⇒ Meldung das der neue host hinzugefügt wurde, bzw neue Datei anlegen.
    • Am besten dann noch edit Config-File auswählen und die Einträge kontrollieren (IdentityFile muss von Hand hinzugefügt werden)
      IdentityFile C:\Users\Andreas\.ssh\id_rsa

      damit das SSH-Key Pair Verfahren für den Login verwendet wird. Ansonsten muss man das Passwort von Benutzer „pi“ verwenden.
      Pfad von „config“-File: C:\Users\Andreas\.ssh

    • Ebenso kann die IP in der config-Datei durch einen Klartextnamen ersetzt werden. Hier mal meine config-datei:
      Host Raspi
        HostName 192.168.178.84
        User pi
        ForwardAgent yes
        IdentityFile C:\Users\Andreas\.ssh\id_rsa

      Etwas verwirrend ist, dass der „HostName“ die Rechneradresse ist, und Host der „Name“

  • Nun mit „Connect to host“ die Verbindung aufbauen dazu in den PopUps „Linux“ auswählen und die Passphrase vom SSH-Key eingeben.
    Der erste Startup dauert etwas länger, da der Raspi erst mal den vscode Server runterladen muss.

Flask und Apache

Falls auf dem WEB-Server Plesk verwendet wird, kann man diverse Einträge bzgl. der Apache Kofiguration in Plesk vornehmen, oder seine eigene Einträge unter:

/var/www/vhosts/system/geier99.de/conf/vhost.conf
/var/www/vhosts/system/geier99.de/conf/vhost_ssl.conf

vornehmen.

Meine Notizen um meine Flask-App (CAN Log-Files Analyzer) dann mit dem Apache Modul „mod-wsgi“ zum laufen zu kriegen.

public/python_webserver.txt · Zuletzt geändert: 2023/12/09 09:10 von geier99