Wenn man interaktive Webseiten unter Python und Flask gestaltet, kommt man an einen Punkt, wo man einen WSGI-Server benötigt.

Als erstes führen wir ein Update des Betriebssystems durch.

apt update && apt -y dist-upgrade

Python installieren:

apt -y install python3 libexpat1 python3-flask

Apache 2 und mod_wsgi installieren:

apt install -y apache2 apache2-utils ssl-cert libapache2-mod-wsgi-py3 

Jetzt müssen wir den Apache einrichten. Dazu erstellen wir als erstes ein Testskript:

Dazu erstellen wir unter /var/www/html/ eine Datei “wsgi.py

nano /var/www/html/wsgy.py
def application(environ,start_response):
    status = '200 OK'
    html = '<html>\n' \
           '<body>\n' \
           '<div style="width: 100%; font-size: 40px; font-weight: bold; text-align: center;">\n' \
           'Welcome to mod_wsgi Test Page\n' \
           '</div>\n' \
           '</body>\n' \
           '</html>\n'
    response_header = [('Content-type','text/html')]
    start_response(status,response_header)
    return [html.encode('UTF-8')]

Jetzt müssen wir herausfinden, unter welchen Benutzer der Apache läuft, und die Berechtigungen entsprechend anpassen:

In diesen Fall gehören die Dateien, die sich bereits im Ordner gefinden (gefunden haben) Root. Daher werden die Berechtigungen an die Gegebenheiten angepasst:

chown root:root /var/www/html/wsgy.py

Zugegeben, es ist aus Sicherheitsgründen nicht sehr gut, den Apache unter Root laufen zu lassen, aber das zu ändern würde den Rahmen der Anleitung sprengen.

Jetzt erstellen wir eine Konfigurationsdatei für den Apache:

nano /etc/apache2/conf-available/wsgi.conf

Dort den folgenden Inhalt einfügen:

WSGIScriptAlias /wsgi /var/www/html/wsgy.py

Konfiguration aktivieren:

a2enconf wsgi

Fast fertig!

Jetzt den Apache neu starten:

systemctl restart apache2

Jetzt können Sie versuchen die Webseite unter der Adresse http://ihre-IP/wsgi aufrufen:

Sollte es Probleme geben, schauen Sie in die Datei /var/log/apache2/error.log nach:

 tail -f /var/log/apache2/error.log

Troubleshooting:

Fehler …does not contain WSGI application ‘application’:

Sollte ein vergleichbarer Fehler auftreten, bitte die folgende Zeile in das WSGI-Script einfügen:

app = Flask(__name__)
application = app  # Diese Zeile einfügen!!!

Leave a Comment

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.