In diesem Kapitel ist beschrieben, welche Abhängigkeiten installiert sein müssen, um die Flask-App zu starten und sie weiterzuentwickeln. Darüber hinaus können weitere Informationen zur Funktionsweise von Flask-Applikationen und deren Entwicklung diesem Guide und diesem Tutorial der Herausgeber von Flask entnommen werden.
python3 -m venv venv
. venv/bin/activate
Benötigte Dependencies innerhalb es aktivierten Environment installieren:
pip install flask
pip install flask_sqlalchemy
pip install munkres
pip install pandas
pip install markdown
pip install flask_limiter
pip install Flask-WTF
pip install qrcode
pip install Pillow
pip install bcrypt
Innerhalb des Environment kann der Befehl pip
verwendet werden, um pip3
auszuführen.
Vor dem ersten Start der Anwendung müssen ein paar Vorkehrungen getroffen werden, damit die App richtig startet.
- Um die Cookies für die Authentifizierung zu verwenden muss der App ein Secret-Key zugeteilt werden. Dieser wird in
MatchFinder/matchFinder/config.py
unterSECRET_KEY
definiert und sollte möglichst sicher sein (siehe hier für eine beispielhafte Generierung). - Vor dem ersten Start müssen auch die Datenbanktabellen und gleichzeitig auch die Passwörter für die Authentifizierung erstellt werden. Die zu erstellenden Passwörter werden als Plain-Text in eine Datei mit dem Namen
passwords.txt
geschrieben (Datei auf Root-Ebene erstellen). Anschließend müssen folgende Zeilen einkommentiert werden:
# __init__.py
with create_app().app_context():
# ...
from . import database_helper #<- this line
database_helper.init_db() #<- this line
# database_helper.py
def init_db():
reset_db() # <-- DANGER # this line
rows = password_model.Password.query.count()
if rows == 0:
password_model.Password.query.delete()
from . import password_helper
password_helper.create_passwords()
Die ersten beiden Zeilen rufen init_db()
in database_helper.py
auf. Die Funktion reset_db()
setzt die Datenbank zurück, indem alle Tabellen verworfen und neu angelegt werden. Anschließend speichern die unteren Zeilen die Passwörter aus passwords.txt als Hash in die Datenbank. Wichtig: Nach dem ersten erfolgreichen Start müssen die mit \# <- this line
kommentierten Zeilen wieder auskommentiert werden, um bei einem späteren App-Neustart nicht versehentlich die Datenbank zurückzusetzen.
export FLASK_APP=matchFinder
export FLASK_ENV=development # <-- nur für development-Zwecke
flask run
Alternativ kann mit
flask run --host=0.0.0.0
die Flask App gestartet und allen Geräten im gleichen Netz zur Verfügung gestellt werden. Die App kann dann über <IP DES HOSTS>:5000
erreicht werden.