Apache/mod wsgi

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist mit keiner aktuell unterstützten Ubuntu-Version getestet! Bitte hilf mit, indem du diesen Artikel testest. Wiki/FAQ - häufig gestellte Fragen (Abschnitt „Wikiartikel-testen“).

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. Installation von Programmen

  2. Ein Terminal öffnen

  3. Einen Editor öffnen

Inhaltsverzeichnis
  1. Installation
  2. Benutzung
  3. Alternativen
  4. Links

Wiki/Icons/python.png mod_wsgi 🇬🇧 ist ein Modul für den Webserver Apache, mit dessen Hilfe Python-Webapplikation, welche die WSGI-Schnittstelle nutzen, mit dem Webserver kommunizieren können. WSGI steht dabei für „Web Service Gateway Interface“. WSGI ist der weithin akzeptierte Standard für Python-Webapplikation, den auch quasi alle Webbibliotheken und -applikationen unterstützen. Die Spezifikation kann bei Interesse in der PEP 3333 🇬🇧 nachgelesen werden.

Installation

Zur Nutzung in Kombination mit Apache muss folgendes Paket für Python 3 installiert werden [1]:

Paketliste zum Kopieren:

sudo apt-get install libapache2-mod-wsgi-py3 

Oder mit apturl die Pakete installieren. Link: apt://libapache2-mod-wsgi-py3

Wer Python 2 nutzt, installiert stattdessen das folgende Paket:

Paketliste zum Kopieren:

sudo apt-get install libapache2-mod-wsgi 

Oder mit apturl die Pakete installieren. Link: apt://libapache2-mod-wsgi

Nach der Installation muss das Modul aktiviert werden [2]:

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 via mod_wsgi an den Apache Webserver zu binden, die Datei /etc/apache2/sites-available/default mit einem Editor mit Root-Rechten öffnen[3]. Dort findet man ziemlich am Anfang:

1
2
3
<Directory /var/www>
...
</Directory>

Hier ergänzt man folgendes (Pfade je nach Apache-Version anpassen; hier für Apache 2.2):

1
2
3
4
5
6
7
8
9
WSGIScriptAlias /alias /var/www/test/python/wsgi.py
WSGIPythonPath /var/www/test/python

<Directory /var/www>
<Files wsgi.py>
Order deny,allow
Allow from all
</Files>
</Directory>

Damit steht wsgi.py unter der URL http://SERVER-IP_ODER_NAME/alias 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 einfache Basisimplementierung 🇬🇧 eines WSGI-Servers, welcher sich zwar Testzwecke aber nicht für produktive Umgebungen eignet.

Ein auf WSGI spezialisierter Server ist z.B. gunicorn 🇬🇧. Dieser Server wird auch bei ubuntuusers.de genutzt. Eine Übersicht über weitere WSGI-Server findet man im Internet auf der Seite von wsgi.org 🇬🇧.