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!!!