#encoding utf-8 #extends templates.main_template #attr $title = "XAMPP mit Python CGI" #attr $description = "Wie man Python-CGI bei XAMPP unter Windows aktiviert" #attr $keywords = ( "Python Programmierung Apache Apache2 XAMPP LAMPP PC Computer Netzwerk " "Windows CGI Common Gateway Interface httpd.conf" ) #block rest **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 ======= Quellen ======= - XAMPP: http://www.apachefriends.org/de/xampp-windows.html - Python: http://python.org/ =================== 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] ... ### APACHE + MYSQL IS STARTING NOW ### 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:: ... Options Indexes FollowSymLinks Includes ExecCGI ... 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:: ... AddHandler cgi-script .cgi ... 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. ==================== Weiterführende Links ==================== - http://docs.python.org/lib/module-cgi.html - http://wiki.python.org/moin/CgiScripts #end block rest #block main_block $rest2html($rest) #end block main_block