Apache Konfiguration für Python Scripte

Vielleicht wird der ein oder andere einmal in die Verlegenheit kommen, genau dies zu tun: PHP Variablen an ein Python Script übergeben. Im ersten Teil des Tutorials möchte ich zunächst die Konfiguration des Apachen beschreiben, im Zweiten das Implementieren eines Testscripts.
Auf meinem Windows PC ist Xampp installiert. Sicherlich nicht die beste Idee, es unter Windows versuchen zu wollen, aber warum nicht? Zunächst installiert man also Python. (Python Download-Link) Während des Installationsvorgangs ist das Hinzufügen von Python in die Windows Path-Variable standardmäßig deaktiviert. Ich habe es aktiviert und es dem Installer überlassen. Python ist jetzt in Version 3.4 fertig installiert.

Apache Konfiguration

Standardmäßig interpretiert der Apache keine Python Scripte. Damit es funktioniert, müssen wir in der Konfiguration ein paar Kleinigkeiten anpassen. Im Xampp Verzeichnis liegt der Ordner „apache“ in dem sich wiederum der Ordner „conf“ befindet. Dort liegt die httpd.conf, die angepasst werden muss. Je nachdem wo auf der Festplatte Xampp liegt, findet man dort folgende Zeilen:

DocumentRoot "E:/Xampp/htdocs"
<Directory "E:/Xampp/htdocs">

    Options Indexes FollowSymLinks Includes ExecCGI

    AllowOverride All

    Require all granted
</Directory>

Entscheidend ist, dass unter „Options“ auch „ExecCGI“ steht. Normalerweise liegen CGI Scripte im cgi-bin Ordner des Apachen. Will man das Ausführen jedoch auch außerhalb dieses Ordners, in meinem Fall, im htdocs-Verzeichnis erlauben, ist diese Einstellung nötig.
Andernfalls kann man sich im Abschnitt „alias_module“ der Apache Config anschauen, dass dort bereits ein ScriptAlias gesetzt wurde.

<IfModule alias_module>
    ScriptAlias /cgi-bin/ "E:/Xampp/cgi-bin/"
</IfModule>

Soll heißen:
Nehmen wir an, die URL zum PHP Script ist www.example.com/index.php. Unser Python Script liegt jedoch außerhalb des htdocs-Verzeichnis im cgi-bin. Dennoch leitet der Apache den Aufruf www.example.com/cgi-bin/test.py in das cgi-bin-Verzeichnis um.

Darüber hinaus, muss dem Apachen per Konfiguration mitgeteilt werden, bei welchen Scripten es sich überhaupt um CGI Scripte handelt. Standardmäßig gehören dazu Dateien, die auf .cgi, .pl und .asp enden. Die entsprechende Einstellung findet sich hier:

<IfModule mime_module>
    TypesConfig conf/mime.types

    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz

    AddHandler cgi-script .cgi .pl .asp .py

    AddType text/html .shtml
    AddOutputFilter INCLUDES .shtml
</IfModule>

Die AddHandler-Direktive erweitern wir um .py, damit Python auch funktioniert.

Zu guter letzt muss noch überprüft werden, ob das cgi Modul überhaupt geladen wird. Im LoadModule Abschnitt der httpd.config, kommentiert man diese Zeile gegebenenfalls ein.

LoadModule cgi_module modules/mod_cgi.so

 

Zum zweiten Teil

Schreib einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *


*