XAMPP mit Python CGI

Windows-Warnung! Dieser Artikel beschäftigt sich leider nicht mit Linux. ;-)


Gleich vorab. Es ist nicht notwendig, Python irgendwie unterhalb des XAMPP-Ordners zu installieren.

Hier mal die groben Schritte:

  1. Python installieren, falls es nicht schon installiert ist.
  2. XAMPP installieren, falls es nicht schon installiert ist. Es ist egal, ob Python vor oder nach XAMPP installiert wird.
  3. XAMPP einstellen und mit CGI testen

Python installieren

Python kann ganz normal installiert werden. Sollte es sogar! Es bringt nichts irgendwelche Fehler im XAMPP zu suchen, wenn man nicht weiß, ob Python überhaupt richtig funktioniert. Am Besten du installierst Python in den vorgegebenen Ordner C:\Python25.

XAMPP installieren

XAMPP bietet mehrere Möglichkeiten für die Installation an. Die einfache Installation mit dem Installer ist OK. Man kann damit nicht viel falsch machen. Ich mag es, wenn eine Installation nicht viel hinterlässt und nicht ständig im Hintergrund als Dienst herumgeistert, obwohl ich vieles nur sehr selten brauche. Deshalb bevorzuge ich die Installation aus einem Zip-File heraus.

Ich entpacke also das Zip-File direkt in den Wurzelordner meines Systemlaufwerks. Das ist normalerweise das Laufwerk C:\. Im Endeffekt muss es im Ordner C:\ den neuen Unterordner xampp geben.

Mit einem Doppelklick auf die Datei C:\xampp\xampp_start.exe wird der Server gestartet. Es öffnet sich eine Konsole in der in etwa so etwas drinnen steht:

Diese Eingabeaufforderung nicht waehrend des Runnings beenden ...
Zum stoppen bitte die xampp_stop benutzen!
Please do not close this window while running ...
Use the xampp_stop for shutdown!

Please wait [Bitte warten] ...

Wenn du jetzt im Browser http://localhost eingibst, dann sollte sich XAMPP melden.

XAMPP beendest du mit einem Doppelklick auf die Datei C:\xampp\xampp_stop.exe.

XAMPP einstellen

Damit Python als CGI aufgerufen wird, musst du dem Apachen (dem in XAMPP eingebauten Webserver) mitteilen, dass Dateien mit der Endung *.py über das "Common Gateway Interface" aufgerufen werden sollen.

Der Apache ist bereits so eingestellt, dass er Dateien, die sich im Ordner C:\xampp\cgi-bin\ befinden und mit der Endung *.cgi versehen sind, über das CGI anspricht.

Der einfachste Test ist, wenn du im Ordner C:\xampp\cgi-bin\ eine Datei mit dem Namen pycgi.cgi mit diesem Inhalt erstellst:

#!C:/Python25/python.exe
# -*- coding: iso-8859-15 -*-

print "Content-Type: text/plain;charset=iso-8859-15"
print

print "Hallo!"
print "Ich bin nur ein Text."

Achte darauf, dass der Apache evt. nicht so gut mit Backslashes (\) kann. Deshalb ist der Shebang (auch ab und zu Magic Line genannt) besser mit normalen Slashes (/) zu schreiben. Achte ebenfalls darauf, dass der Pfad zum Python-Interpreter korrekt angegeben ist. Sonst funktioniert es nicht.

Wenn du jetzt im Browser den URL http://localhost/cgi-bin/pycgi.cgi eingibst, dann sollte im Browser der Text:

Hallo!
Ich bin nur ein Text.

erscheinen. Wenn das funktioniert hat, dann kann XAMPP schon mal prinzipiell Python-CGIs interpretieren. Jetzt muss XAMPP nur noch so eingestellt werden, dass auch Dateien mit der Endung *.py als CGI-Programm erkannt werden. Weiters will ich XAMPP so einstellen, dass *.py-Dateien nicht nur im cgi-bin-Ordner, sondern in jedem Unterordner von J:\xampp\htdocs\myapp als CGI-Programm erkannt und korrekt von Python interpretiert wird.

Dafür erstelle ich jetzt mal den Ordner J:\xampp\htdocs\myapp und kopiere mir die Datei J:\xampp\cgi-bin\pycgi.cgi hinein. Dann benenne ich diese Datei nach pycgi.py um. Damit kann der Apache jetzt noch nichts anfangen, aber das werden wir ihm jetzt beibringen.

Die Einstellungen des Apachen befinden sich in der Datei J:\xampp\apache\conf\httpd.conf.

Die Zeilen:

<Directory "/xampp/htdocs">
  ...
  Options Indexes FollowSymLinks Includes ExecCGI
  ...
</Directory>

zeigen durch die Einstellung ExecCGI auf, dass unterhalb des Ordners C:\xampp\htdocs CGI-Programme prinzipiell ausgeführt werden. Das ist schon mal ganz gut so.

Die Zeilen:

<IfModule mime_module>
  ...
  AddHandler cgi-script .cgi
  ...
</IfModule>

zeigen auf, dass Dateien mit der Endung .cgi als CGI-Skript angenommen werden. Schreibe einfach unterhalb der Zeile AddHandler cgi-script .cgi noch diese Zeile hin und speichere die httpd.conf-Datei ab:

AddHandler cgi-script .py

Starte XAMPP neu. Danach sollte sich das Python-CGI-Skript mit der Endung .py über den URL http://localhost/myapp/pycgi.py aufrufen lassen und den Text anzeigen.