Python in Apache2 mit mod_python (Debian Etch) einbetten
Version 1.0
Autor: Falko Timme <ft [at] falkotimme [dot] com>
Die folgende Anleitung zeigt, wie man mod_python auf einem Debian Etch Server mit Apache2 installiert und nutzt. mod_python ist ein Apache Modul, das den Python Interpreter auf dem Server einbettet. Dieses Modul ermöglicht es, webbasierte Applikationen in Python zu schreiben, die wesentlich schneller als das bekannte CGI ablaufen. Dazu kommen fortgeschrittene Features wie beispielsweise persistente Datenbankverbindungen, die Speicherung von Daten zwischen Seitenaufrufen und der Zugriff auf interne Apache-Funktionen.
Wie immer kommt auch diese Anleitung ohne Gewähr.
1 Vorbemerkung
Dieses Howto wurde auf einem Debian Etch Server mit der IP Adresse 192.168.0.100 getestet, auf dem Apache2 bereits installiert ist.
In diesem Beispiel nutze ich ausserdem einen virtuellen Host mit dem Document Root /var/www.
2 Die Installation von mod_python
Um mod_python zu installieren, geben wir folgenden Befehl ein:
apt-get install libapache2-mod-python
3 Apache konfigurieren
Apache muss nun so konfiguriert werden, dass es Python Dateien verarbeiten kann. Dafür gibt es zwei Möglichkeiten. Die erste standardmässige Möglichkeit wäre Publisher Handler zu benutzen. Dieses ermöglicht das Schreiben von reinen Python Skripten mit der Dateiendung .py, das von Apache interpretiert werden kann. Die zweite Möglichkeit wäre die Benutzung von PSP Handler. PSP ist die Abkürzung für Python Server Pages. PSP ermöglicht die Einbettung des Python Codes direkt in den HTML Quelltext, ähnlich wie bei PHP. PSP Dateien haben die Endung .psp.
3.1 Der Publisher Handler
Um den Publisher Handler zu aktivieren, müssen wir auf die Konfiguration des virtuellen Hosts zugreifen. Ich nutze hier den standardmässigen V-Host auf Debian mit dem Document Root /var/www; die Konfiguration für diesen virtuellen Host befindet sich in /etc/apache2/sites-available/default. Ich füge AddHandler mod_python .py hinzu, PythonHandler mod_python.publisher, und PythonDebug On:
vi /etc/apache2/sites-available/default
[...] <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all AddHandler mod_python .py PythonHandler mod_python.publisher PythonDebug On </Directory> [...] |
Hiernach wird Apache neu gestartet:
/etc/init.d/apache2 restart
Anschliessend erstellen wir einen kleinen Python Test Skript (z. B. /var/www/test.py), der puren Python Quelltext enthält…
vi /var/www/test.py
def index(req): return "Test successful"; |
… und rufen diesen in einem Browser auf, z.B. http://192.168.0.100/test.py. Wenn alles gut geht, sollte nun im Browser Test successful angezeigt werden.
3.2 Der PSP Handler
Um den Publisher Handler zu aktivieren, müssen wir ebenfalls auf die Konfiguration des virtuellen Hosts zugreifen. Ich nutze hier den standardmässigen V-Host auf Debian mit dem Document Root /var/www; die Konfiguration hierfür befindet sich in /etc/apache2/sites-available/default. Ich füge AddHandler mod_python .psp hinzu, PythonHandler mod_python.psp, und PythonDebug On:
vi /etc/apache2/sites-available/default
[...] <Directory /var/www/> Options Indexes FollowSymLinks MultiViews AllowOverride None Order allow,deny allow from all AddHandler mod_python .psp PythonHandler mod_python.psp PythonDebug On </Directory> [...] |
Auch hiernach wird Apache neu gestartet:
/etc/init.d/apache2 restart
Für einen Test erstellen wir einen kleinen PSP Skript, z. B. /var/www/test.psp, der sowohl HTML als auch Python Quelltext beinhaltet…
vi /var/www/test.psp
<html> <body> <h1><% req.write("Hello!") %></h1> </body> </html> |
… und rufen diesen in einem Browser auf, z. B. http://192.168.0.100/test.psp. Wenn alles richtig ist, sollte nun Hello! im Browser angezeigt werden.
4 Python Modules
Werden weitere Python Module benötigt, kann man sie folgendermassen heraussuchen:
apt-cache search python
Wähle die benötigten Module aus und installiere sie folgendermassen:
apt-get install python-mysqldb python-xml
Danach bitte Apache neu starten:
/etc/init.d/apache2 restart
5 Links
- mod_python: http://www.modpython.org
- Python: http://www.python.org
- Apache: http://httpd.apache.org
- Debian: http://www.debian.org