Good to Know Database

Raspbian Wheezy: Apache2 und Python-Skripte über CGI ausführen


Damit man ein Python-Skript auf einem Apache2 Webserver aufrufen kann und die Ausgaben im Browser angezeigt werden, gibt es mehrere Möglichkeiten. Bei der hier beschriebenen Lösung wird das Common Gateway Interface (CGI) zur Ausführung des Python-Skripts verwendet.

Als Grundlage für die folgende Anleitung diente ein Raspberry Pi mit dem Raspbian Image vom 07.01.2014 (2014-01-07-wheezy-raspbian.zip).

Apache2 installieren

Sollten Sie Apache2 noch nicht installiert haben, können Sie Apache2 wie folgt installieren. Bevor Sie jedoch mit der Installation loslegen, sollten Sie die lokale Paketdatenbank aktualisieren.

pi@raspberrypi ~ $ sudo apt-get update

Mit dem nachfolgenden Befehl können Sie jetzt den Webserver Apache2 installieren.

pi@raspberrypi ~ $ sudo apt-get install apache2

Im Anschluss an die Installation wird in der Regel der Apache2-Daemon automatisch gestartet. Dies können Sie mit dem folgenden Befehl überprüfen.

pi@raspberrypi ~ $ sudo /etc/init.d/apache2 status

Python installieren

In der Regel ist Python bei den Raspbian Images bereits installiert. Dies können Sie zum Beispiel mit dem folgenden Befehl überprüfen und zugleich die Python-Version auslesen.

pi@raspberrypi ~ $ python -V
Python 2.7.3

Sollte wider erwarten Python nicht installiert sein, können Sie die Installation mit dem folgenden Befehl vornehmen.

pi@raspberrypi ~ $ sudo apt-get install python

Common Gateway Interface konfigurieren

Öffnen Sie die Apache2-Konfigurationsdatei /etc/apache2/sites-available/default mit einem Editor.

pi@raspberrypi ~ $ sudo vi /etc/apache2/sites-available/default

Überprüfen Sie, ob im Abschnitt /usr/lib/cgi-bin bei der Direktive Options die Option ExecCGI wie im folgenden Beispiel aktiviert ist.

        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

Sollten Anpassungen an der Konfigurationsdatei nötig gewesen sein, müssen Sie den Webserver neu starten.

pi@raspberrypi ~ $ sudo /etc/init.d/apache2 restart

Funktionstest des Common Gateway Interfaces

Die Python-Skripte welche durch den Apache2 Webserver ausgeführt werden sollen, müssen im Verzeichnis /usr/lib/cgi-bin abgelegt werden. Für einen ersten Funktionstest erstellen Sie die Datei /usr/lib/cgi-bin/test.py.

pi@raspberrypi ~ $ sudo vi /usr/lib/cgi-bin/test.py

Fügen Sie in diese Datei das folgende Python-Skript ein.

#!/usr/bin/env python
# -*- coding: utf-8 -*-

# enable debugging
import cgitb
cgitb.enable()

print "Content-Type: text/plain;charset=utf-8"
print

print "Funktionstest erfolgreich."

Nachdem Sie die Datei gespeichert haben, müssen Sie die Zugriffsrechte anpassen damit das Skript ausgeführt werden kann.

pi@raspberrypi ~ $ sudo chmod 0755 /usr/lib/cgi-bin/test.py

Öffnen Sie jetzt einen Browser und rufen das Python-Skript auf. Sobald Sie die Ausgabe Funktionstest erfolgreich angezeigt bekommen, funktioniert die Ausführung des Python-Skripts über das Common Gateway Interface von Apache2.

http://raspberrypi.home.lan/cgi-bin/test.py

Weiterführende Tutorials

Raspbian Wheezy: Apache2 meldet "Could not reliably determine the server's fully qualified domain name"


Dieser Eintrag wurde am 16.02.2014 erstellt und zuletzt am 25.09.2016 bearbeitet.

Direkter Link zu dieser Seite: http://www.gtkdb.de/index_36_2505.html

[ Zur Startseite ]   [ Zur Kategorie ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2018 by Georg Kainzbauer