Apache2 mit mod_python
Die folgende Anleitung zeigt, wie man mod_python auf einem Debian Server mit Apache2 installiert und einrichtet. 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.
Um mod_python unter Debian zu installieren, geben wir folgenden Befehl ein:
root:~# apt-get install libapache2-mod-python
Nun erstellen wir für das Python Modul eine Konfigurationsdatei.
root:~# vi /etc/apache2/mods-available/python.conf
# Python settings - mod_python.c
#
<IfModule mod_python.c>
# You can expand the PythonPath in a .htaccess file
# if you have the Option 'AllowOverride AuthConfig' defined.
#
# Content of the .htaccess file:
# PythonPath "sys.path+['/var/www/python/lib']"
#
# Python Publisher
#
<Files ~ "\.py$">
AddHandler mod_python .py
PythonHandler mod_python.publisher
PythonDebug On
</Files>
#
# Embedded Python (Python Server Pages)
#
<Files ~ "\.psp$">
AddHandler mod_python .psp
PythonHandler mod_python.psp
PythonDebug On
</Files>
</IfModule>
Damit die Konfigurationsdatei für das Python Modul auch geladen wird, erstellen wir noch einen Symlink im /etc/apache2/mods-enabled
Verzeichnis.
root:~# cd /etc/apache2/mods-enabled/
root:/etc/apache2/mods-enabled# ln -s ../mods-available/python.conf
Nun erstellen wir unter /var/www
eine test.py um den Publisher Handler zu testen.
root:~# cd /var/www
root:/var/www# vi test.py
test.py
def index(req):
return "Test successful";
Nun erstellen wir unter /var/www
eine test.psp um den PSP Handler zu testen.
root:/var/www# vi test.psp
test.psp
<html>
<body>
<h1><% req.write("Hello!") %></h1>
</body>
</html>
Damit die Änderungen aktiv werden, müssen wir nur noch den Apache Webserver neu starten.
root:/var/www# /etc/init.d/apache2 restart
In dieser oben beschriebenen Methode ist Python für den kompletten Server aktiviert. Will man Python nur für bestimmte Virtual Host einstellen, bindet man die python.conf einfach im entsprechenden vhost Datei mit include ein. Dann sollte man natürlich den Symlink python.conf in /etc/apache2/mods-enabled/
wieder entfernen.
root:/var/www# vi /etc/apache2/sites-available/default
beispiel vhost datei
# default vhost
<VirtualHost *:80>
ServerName localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www>
Options Indexes Includes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
# Python Modul einbinden
Include /etc/apache2/mods-available/python.conf
ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/access.log combined
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
</VirtualHost>