Flask installieren: Unterschied zwischen den Versionen
Tim00 (Diskussion | Beiträge) (Python Anwendung mit dem Flask Framework installieren) |
Tim00 (Diskussion | Beiträge) |
||
(7 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 2: | Zeile 2: | ||
Flask (https://flask.palletsprojects.com/) ist ein minimales Python Framework. | Flask (https://flask.palletsprojects.com/) ist ein minimales Python Framework. | ||
Es ist eine leichtgewichtige Alternative zu [[ | Es ist eine leichtgewichtige Alternative zu [[Django installieren|Django]], welches doch sehr mächtig ist. | ||
Es wurde im April 2010 unter einer BSD-Lizenz veröffentlicht. | Es wurde im April 2010 unter einer BSD-Lizenz veröffentlicht. | ||
== Installation == | == Installation == | ||
Diese Installation liegt auch als [https:// | Diese Installation liegt auch als [https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/flask Ansible Skript] vor, und kann automatisiert durchgeführt werden. | ||
Hier wird die manuelle Installation beschrieben: | Hier wird die manuelle Installation beschrieben: | ||
Zeile 14: | Zeile 14: | ||
Zunächst wird die Virtualenv-Umgebung erstellt: | Zunächst wird die Virtualenv-Umgebung erstellt: | ||
< | <syntaxhighlight lang=bash> | ||
mkdir myproject | |||
cd myproject | |||
echo "export PIPENV_VENV_IN_PROJECT=1" >> ~/.profile | |||
chmod a+x ~/.profile | |||
source ~/.profile | |||
pipenv install | |||
</ | </syntaxhighlight> | ||
Dann werden die Flask-Bibliotheken in die eben erstellte Virtualenvumgebung installiert. | Dann werden die Flask-Bibliotheken in die eben erstellte Virtualenvumgebung installiert. | ||
< | <syntaxhighlight lang=bash> | ||
cd ~/myproject | |||
pipenv install flask | |||
</ | </syntaxhighlight> | ||
Testen, ob Flask installiert ist: | Testen, ob Flask installiert ist: | ||
< | <syntaxhighlight lang=bash> | ||
cd ~/myproject | |||
pipenv run python -m flask --version | |||
Python 3.7.3 | Python 3.7.3 | ||
Flask 2.2.2 | Flask 2.2.2 | ||
Werkzeug 2.2.2 | Werkzeug 2.2.2 | ||
</ | </syntaxhighlight> | ||
== Die eigentliche Anwendung anlegen == | == Die eigentliche Anwendung anlegen == | ||
Zeile 42: | Zeile 42: | ||
Es soll die Datei <code>myproject.py</code> im Verzeichnis <code>myproject</code> angelegt werden, mit folgendem Inhalt: | Es soll die Datei <code>myproject.py</code> im Verzeichnis <code>myproject</code> angelegt werden, mit folgendem Inhalt: | ||
< | <syntaxhighlight lang=python line> | ||
from flask import Flask | from flask import Flask | ||
app = Flask(__name__) | app = Flask(__name__) | ||
Zeile 52: | Zeile 52: | ||
if __name__ == "__main__": | if __name__ == "__main__": | ||
app.run(host='0.0.0.0') | app.run(host='0.0.0.0') | ||
</ | </syntaxhighlight> | ||
Die Anwendung kann testweise gestartet werden: | Die Anwendung kann testweise gestartet werden: | ||
< | <syntaxhighlight lang=bash> | ||
cd ~/myproject | |||
pipenv run python myproject.py | |||
* Serving Flask app 'myproject' | * Serving Flask app 'myproject' | ||
* Debug mode: off | * Debug mode: off | ||
Zeile 66: | Zeile 66: | ||
* Running on http://83.223.abc.xyz:5000 | * Running on http://83.223.abc.xyz:5000 | ||
Press CTRL+C to quit | Press CTRL+C to quit | ||
</ | </syntaxhighlight> | ||
Die Anwendung ist nun unter der angegebenen IP Adresse auf Port 5000 erreichbar, und lässt sich damit auch einfach debuggen. | Die Anwendung ist nun unter der angegebenen IP Adresse auf Port 5000 erreichbar, und lässt sich damit auch einfach debuggen. | ||
Zeile 75: | Zeile 75: | ||
Dies ist der empfohlene Weg, wie Python Anwendungen bei Hostsharing betrieben werden können: | Dies ist der empfohlene Weg, wie Python Anwendungen bei Hostsharing betrieben werden können: | ||
In den Eigenschaften der Domain in HSAdmin muss das Passengermodul aktiviert werden. | |||
Dort wird auch der Pfad zum Python-Binärprogramm konfiguriert, unter PassengerPython: z.B. <code>/home/pacs/xyz00/users/example/myproject/.venv/bin/python3</code>. | |||
< | Im Domain-Verzeichnis <code>~/doms/example.com/</code> wird eine Datei <code>.htaccess</code> mit der Pfad zur Anwendung angelegt: | ||
<syntaxhighlight lang=apache line> | |||
SetEnv PYTHONPATH /home/pacs/xyz00/users/benutzer/myproject | SetEnv PYTHONPATH /home/pacs/xyz00/users/benutzer/myproject | ||
</ | </syntaxhighlight> | ||
Die Verzeichnisse "subs/www" und "subs-ssl/www" werden gelöscht. | Die Verzeichnisse "subs/www" und "subs-ssl/www" werden gelöscht. | ||
Zeile 88: | Zeile 89: | ||
In "app-ssl" wird eine Datei "passenger_wsgi.py" mit folgendem Inhalt abgelegt: | In "app-ssl" wird eine Datei "passenger_wsgi.py" mit folgendem Inhalt abgelegt: | ||
< | <syntaxhighlight lang=python> | ||
from myproject import app as application | from myproject import app as application | ||
</ | </syntaxhighlight> | ||
Das Projekt ist nun unter https://example.com erreichbar. | Das Projekt ist nun unter https://example.com erreichbar. | ||
Zeile 96: | Zeile 97: | ||
== Links == | == Links == | ||
*[https://flask.palletsprojects.com/ Webseite des Flask Projekts] | *[https://flask.palletsprojects.com/ Webseite des Flask Projekts] | ||
*[https:// | *[https://codeberg.org/tpokorra/hs.ansible/src/branch/main/playbooks/flask Ansible Playbook für Hostsharing] | ||
---- | ---- |
Aktuelle Version vom 3. August 2024, 04:28 Uhr
Allgemeines
Flask (https://flask.palletsprojects.com/) ist ein minimales Python Framework. Es ist eine leichtgewichtige Alternative zu Django, welches doch sehr mächtig ist.
Es wurde im April 2010 unter einer BSD-Lizenz veröffentlicht.
Installation
Diese Installation liegt auch als Ansible Skript vor, und kann automatisiert durchgeführt werden.
Hier wird die manuelle Installation beschrieben:
Die Bibliotheken von Flask werden in einer Virtualenv-Umgebung installiert.
Zunächst wird die Virtualenv-Umgebung erstellt:
mkdir myproject
cd myproject
echo "export PIPENV_VENV_IN_PROJECT=1" >> ~/.profile
chmod a+x ~/.profile
source ~/.profile
pipenv install
Dann werden die Flask-Bibliotheken in die eben erstellte Virtualenvumgebung installiert.
cd ~/myproject
pipenv install flask
Testen, ob Flask installiert ist:
cd ~/myproject
pipenv run python -m flask --version
Python 3.7.3
Flask 2.2.2
Werkzeug 2.2.2
Die eigentliche Anwendung anlegen
Es soll die Datei myproject.py
im Verzeichnis myproject
angelegt werden, mit folgendem Inhalt:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "<h1 style='color:blue'>Hello World!</h1>"
if __name__ == "__main__":
app.run(host='0.0.0.0')
Die Anwendung kann testweise gestartet werden:
cd ~/myproject
pipenv run python myproject.py
* Serving Flask app 'myproject'
* Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
* Running on all addresses (0.0.0.0)
* Running on http://127.0.0.1:5000
* Running on http://83.223.abc.xyz:5000
Press CTRL+C to quit
Die Anwendung ist nun unter der angegebenen IP Adresse auf Port 5000 erreichbar, und lässt sich damit auch einfach debuggen.
Das sollte aber nicht für den Dauerbetrieb sein, daher Strg-C drücken, um abzubrechen.
Nutzung mit Passenger und WSGI
Dies ist der empfohlene Weg, wie Python Anwendungen bei Hostsharing betrieben werden können:
In den Eigenschaften der Domain in HSAdmin muss das Passengermodul aktiviert werden.
Dort wird auch der Pfad zum Python-Binärprogramm konfiguriert, unter PassengerPython: z.B. /home/pacs/xyz00/users/example/myproject/.venv/bin/python3
.
Im Domain-Verzeichnis ~/doms/example.com/
wird eine Datei .htaccess
mit der Pfad zur Anwendung angelegt:
SetEnv PYTHONPATH /home/pacs/xyz00/users/benutzer/myproject
Die Verzeichnisse "subs/www" und "subs-ssl/www" werden gelöscht. Die Datei .htaccess im Verzeichnis "htdocs-ssl" wird ebenfalls gelöscht.
In "app-ssl" wird eine Datei "passenger_wsgi.py" mit folgendem Inhalt abgelegt:
from myproject import app as application
Das Projekt ist nun unter https://example.com erreichbar.