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!
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
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 '<h1>Hello 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
sudo chmod 755 /usr/lib/cgi-bin/example.cgi