Es gibt mehrere Mög­lich­kei­ten, mit Python eine Web­an­wen­dung zu erstellen oder Web­in­hal­te zu ge­ne­rie­ren. In diesem Tutorial wird die ein­fachs­te und grund­le­gends­te Form der Dar­stel­lung der Ausgabe eines Python-Skripts in einem Browser behandelt.

In einigen Si­tua­tio­nen kann es sinnvoll sein, Python als CGI-Skript aus­zu­füh­ren:

  • 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 grund­le­gends­te Teststufe in einem Browser durch­füh­ren.
Tipp

Es gibt bessere und robustere Al­ter­na­ti­ven, als ein Python-Skript als CGI-Skript aus­zu­füh­ren. Je nach Bedarf empfehlen wir Ihnen, entweder mod_wsgi von Apache zu verwenden oder ein Python-Web-Framework wie CherryPy zu in­stal­lie­ren.

An­for­de­run­gen

  • Ein Cloud Server mit Apache, der kon­fi­gu­riert ist, um CGI-Skripte zu erlauben.
Cloud Server
Leis­tungs­star­ke Kon­fi­gu­ra­tio­nen
  • On-Demand ska­lier­bar & Root-Zugriff inklusive
  • Hoch­ver­füg­ba­re Server-Plattform
  • ISO-zer­ti­fi­zier­te Re­chen­zen­tren am Standort Deutsch­land

Python als CGI-Skript ausführen

Nachdem Sie überprüft haben, dass Ihr Server so kon­fi­gu­riert ist, dass er CGI-Skripte zulässt, können Sie das Python-Skript in das von Ihnen an­ge­ge­be­ne cgi-bin-Ver­zeich­nis hochladen.

  • CentOS 7: Das Standard-CGI-Ver­zeich­nis ist var/wwww/cgi-bin/cgi-bin/.
  • Ubuntu 16.04: Das Standard-CGI-Ver­zeich­nis ist /usr/lib/cgi-bin.

Geben Sie der Datei aus­führ­ba­re Be­rech­ti­gun­gen:

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 Do­mä­nen­na­men oder die IP-Adresse:

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

File Ex­ten­si­ons

Um Ihr Python-Skript als CGI-Skript aus­zu­füh­ren, können Sie entweder:

  • Benennen Sie Ihr Skript mit einer.cgi-Da­tei­endung (example.cgi).
  • Kon­fi­gu­rie­ren Sie den Apache so, dass er die Da­tei­endung .py als CGI-Skript erkennt und zulässt.

Um die .py-Kon­fi­gu­ra­ti­on zum Apache hin­zu­zu­fü­gen, be­ar­bei­ten Sie die Apache-Kon­fi­gu­ra­ti­ons­da­tei. Am Ubuntu 16.04 ist dies bereits vor­ein­ge­stellt. Sie müssen keine Än­de­run­gen vornehmen, um eine.py-Datei als CGI-Skript aus­zu­füh­ren.

Öffnen Sie unter CentOS 7 die Datei httpd.conf zur Be­ar­bei­tung:

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 Ad­dHa­nd­ler-Kon­fi­gu­ra­ti­on 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 Än­de­run­gen wirksam werden:

sudo systemctl restart httpd

Feh­ler­be­he­bung

Zu Test­zwe­cken empfehlen wir Ihnen, das folgende Bei­spiel­skript 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 an­ge­ge­be­ne cgi-bin-Ver­zeich­nis hoch. Be­trach­ten Sie dann das Skript in einem Browser, entweder mit dem Do­mä­nen­na­men 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 an­ge­ge­be­nen URL gefunden werden kann. Stellen Sie sicher, dass sich das Skript im richtigen Ver­zeich­nis befindet.

  • CentOS 7: Das Standard-CGI-Ver­zeich­nis ist var/wwww/cgi-bin/cgi-bin/.
  • Ubuntu 16.04: Das Standard-CGI-Ver­zeich­nis ist /usr/lib/cgi-bin.

Server 500 Fehler: Dies zeigt in der Regel an, dass die Be­rech­ti­gun­gen der Datei falsch sind. Stellen Sie sicher, dass das Skript über aus­führ­ba­re (chmod 755) Be­rech­ti­gun­gen 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 Be­rech­ti­gun­gen für die Datei sind rwxr-xr-xr-xr-x. Wenn nicht, geben Sie der Datei aus­führ­ba­re Be­rech­ti­gun­gen:

CentOS 7:

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

Ubuntu 16.04:

sudo chmod 755 /usr/lib/cgi-bin/example.cgi
KI-Assistent kostenlos – Ihr smarter All­tags­hel­fer
  • DSGVO-konform & sicher gehostet in Deutsch­land
  • Pro­duk­ti­vi­tät steigern – weniger Aufwand, mehr Output
  • Direkt im Browser starten – ohne In­stal­la­ti­on
Zum Hauptmenü