[[Vorlage(getestet, bionic)]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:Editor: Einen Editor öffnen] }}} [[Inhaltsverzeichnis()]] [[Bild(Wiki/Icons/python.png, 48, align=left)]] [https://modwsgi.readthedocs.io mod_wsgi] {en} ist ein Modul für den Webserver [:Apache_2.4:], mit dessen Hilfe Python-Webapplikation, welche die [wikipedia:Web_Server_Gateway_Interface:WSGI-Schnittstelle] nutzen, mit dem Webserver kommunizieren können. WSGI steht dabei für „'''W'''eb '''S'''ervice '''G'''ateway '''I'''nterface“. WSGI ist der De-Facto Standard für Python-Webapplikation, den auch quasi alle Webbibliotheken und -applikationen unterstützen. Die Spezifikation kann bei Interesse in der [http://legacy.python.org/dev/peps/pep-3333/ PEP 3333] {en} nachgelesen werden. = Installation = Zur Nutzung in Kombination mit Apache muss folgendes Paket für Python 3 installiert werden [1]: {{{#!vorlage Paketinstallation libapache2-mod-wsgi-py3 }}} Nach der Installation muss das Modul gegebenenfalls noch aktiviert werden [2]: {{{#!vorlage Befehl sudo a2enmod wsgi }}} = Benutzung = Wie eine Python-Webapplikation an mod_wsgi angebunden wird, ist in der Regel in der Dokumentation der jeweiligen Applikation bzw. des jeweiligen Web-Frameworks zu finden. Das Schema ist aber immer ähnlich dem folgenden Beispiel. Um die Datei '''wsgi.py''' im Verzeichnis '''/var/www/html/test/python''' via mod_wsgi an den Apache Webserver zu binden, die Datei '''/etc/apache2/sites-available/000-default.conf''' mit einem Editor mit Root-Rechten öffnen[3]. Dort fügt man am Ende, vor dem ``, folgendes ein: {{{#!code apache WSGIScriptAlias /test /var/www/html/test/python/wsgi.py Require all granted }}} Damit steht '''wsgi.py''' unter der URL `http://SERVER-IP_ODER_NAME/test` zur Verfügung. = Alternativen = Neben der Kombination aus Apache und mod_wsgi gibt es noch eine ganze Reihe weiterer, teils spezialisierter Server, welche die WSGI-Schnittstelle unterstützen. Python selbst enthält seit Version 2.6 eine [https://docs.python.org/3.6/library/wsgiref.html#module-wsgiref.simple_server einfache Basisimplementierung] {en} eines WSGI-Servers, welcher sich zwar Testzwecke aber nicht für produktive Umgebungen eignet. Ein auf WSGI spezialisierter Server ist z.B. [http://gunicorn.org/ gunicorn] {en}. Dieser Server wird auch bei ubuntuusers.de genutzt. Eine Übersicht über weitere WSGI-Server findet man im Internet auf der Seite von [http://wsgi.readthedocs.org/en/latest/servers.html wsgi.org] {en}. = Links = * [http://wsgi.readthedocs.org/en/latest/ wsgi.org] {en} - Seite mit vielen Informationen rund um die WSGI-Schnittstelle * [:Apache_2.4:] - Hauptartikel #tag: Server, Internet, Python, Apache