Python als CGI-Script ausführen

Es gibt mehrere Möglichkeiten, mit Python eine Webanwendung zu erstellen oder Webinhalte zu generieren. In diesem Tutorial wird die einfachste und grundlegendste Form der Darstellung der Ausgabe eines Python-Skripts in einem Browser behandelt.

In einigen Situationen kann es sinnvoll sein, Python als CGI-Skript auszuführen:

  • Das Skript ist klein und leicht.
  • Du fängst gerade erst an, Python zu lernen, und willst mit einer einfachen Lösung beginnen.
  • Sie müssen nur die grundlegendste Teststufe in einem Browser durchführen.
Tipp

Es gibt bessere und robustere Alternativen, als ein Python-Skript als CGI-Skript auszuführen. Je nach Bedarf empfehlen wir Ihnen, entweder mod_wsgi von Apache zu verwenden oder ein Python-Web-Framework wie CherryPy zu installieren.

Anforderungen

  • Ein Cloud Server mit Apache, der konfiguriert ist, um CGI-Skripte zu erlauben.

Cloud Server von IONOS

Vertrauen Sie auf flexibel skalierbare und zuverlässige Cloud Server auf hochverfügbarer Infrastruktur mit Standort Deutschland inklusive persönlichem Berater und minutengenauer Abrechnung - Sie zahlen also wirklich nur Ihre benötigten Ressourcen!

VMware Virtualisierung
Rest API
Unlimited Traffic

Python als CGI-Skript ausführen

Nachdem Sie überprüft haben, dass Ihr Server so konfiguriert ist, dass er CGI-Skripte zulässt, können Sie das Python-Skript in das von Ihnen angegebene cgi-bin-Verzeichnis hochladen.

  • CentOS 7: Das Standard-CGI-Verzeichnis ist var/wwww/cgi-bin/cgi-bin/.
  • Ubuntu 16.04: Das Standard-CGI-Verzeichnis ist /usr/lib/cgi-bin.

Geben Sie der Datei ausführbare Berechtigungen:

CentOS 7:

sudo chmod 755 /var/www/cgi-bin/example.cgi

Ubuntu 16.04:

sudo chmod 755 /usr/lib/cgi-bin/example.cgi

Sie können das Skript nun in einem Browser anzeigen, entweder über den Domänennamen oder die IP-Adresse:

http://example.com/cgi-bin/example.cgi
http://192.168.0.1/cgi-bin/example.cgi

File Extensions

Um Ihr Python-Skript als CGI-Skript auszuführen, können Sie entweder:

  • Benennen Sie Ihr Skript mit einer.cgi-Dateiendung (example.cgi).
  • Konfigurieren Sie den Apache so, dass er die Dateiendung .py als CGI-Skript erkennt und zulässt.

Um die .py-Konfiguration zum Apache hinzuzufügen, bearbeiten Sie die Apache-Konfigurationsdatei. Am Ubuntu 16.04 ist dies bereits voreingestellt. Sie müssen keine Änderungen vornehmen, um eine.py-Datei als CGI-Skript auszuführen.

Öffnen Sie unter CentOS 7 die Datei httpd.conf zur Bearbeitung:

sudo nano /etc/httpd/conf/httpd.conf

Finden Sie diesen Abschnitt:

#

#
Directory "/var/www/cgi-bin"
    AllowOverride None
    Options +ExecCGI
    AddHandler cgi-script .cgi .pl
    Require all granted
Directory

Fügen Sie .py zur AddHandler-Konfiguration hinzu:

#

#
Directory "/var/www/cgi-bin"
    AllowOverride None
    Options +ExecCGI
    AddHandler cgi-script .cgi .pl .py
    Require all granted
Directory

Speichern und beenden Sie die Datei. Starten Sie dann den Apache neu, damit die Änderungen wirksam werden:

sudo systemctl restart httpd

Fehlerbehebung

Zu Testzwecken empfehlen wir Ihnen, das folgende Beispielskript zu verwenden:

#!/usr/bin/env python
print "Content-Type: text/html"
print
print ';h1Hello world./h1

Speichern Sie diese als example.py und laden Sie sie zum Testen in das von Ihrem Server angegebene cgi-bin-Verzeichnis hoch. Betrachten Sie dann das Skript in einem Browser, entweder mit dem Domänennamen oder der IP-Adresse:

http://example.com/cgi-bin/example.py
http://192.168.0.1/cgi-bin/example.py

Du wirst "Hallo Welt" sehen.

404-Fehler: Das bedeutet, dass die Datei nicht unter der von Ihnen angegebenen URL gefunden werden kann. Stellen Sie sicher, dass sich das Skript im richtigen Verzeichnis befindet.

  • CentOS 7: Das Standard-CGI-Verzeichnis ist var/wwww/cgi-bin/cgi-bin/.
  • Ubuntu 16.04: Das Standard-CGI-Verzeichnis ist /usr/lib/cgi-bin.

Server 500 Fehler: Dies zeigt in der Regel an, dass die Berechtigungen der Datei falsch sind. Stellen Sie sicher, dass das Skript über ausführbare (chmod 755) Berechtigungen verfügt:

jdoe@localhost:/etc/apache2# ll /usr/lib/cgi-bin/test.cgi
rwxr-xr-x 1 jdoe jdoe 85 Jul 22 16:53 /usr/lib/cgi-bin/test.cgi*

Die richtigen Berechtigungen für die Datei sind rwxr-xr-xr-xr-x. Wenn nicht, geben Sie der Datei ausführbare Berechtigungen:

CentOS 7:

sudo chmod 755 /var/www/cgi-bin/example.cgi

Ubuntu 16.04:

sudo chmod 755 /usr/lib/cgi-bin/example.cgi

Mehr als nur eine Domain!

Hier finden Sie Ihre perfekte Domain - z.B. .de Domain + persönlicher Berater

E-Mail-Postfach
24/7 Support
Wildcard SSL