Python CGI-Grundlagen
Angenommene Umgebung
- Ubuntu Server 18.04LTS
- Python3
Erstellen eines cgi-bin-Verzeichnisses
Erstellen Sie ein cgi-bin
-Verzeichnis direkt unter Ihrem Home-Verzeichnis.
user@hostname:~$ mkdir cgi-bin
user@hostname:~$ cd cgi-bin
Erstellen eines CGI-Skripts
user@hostname:~/cgi-bin$ which python3
/usr/bin/python3
user@hostname:~/cgi-bin$ vi hello.py
Überprüfen Sie den Python3-Pfad mit dem Befehl which
.
hello.py
#!/usr/bin/python3
print('Content-Type: text/html; charset=utf-8')
print()
print('<h1>Hello, World!</h1>')
Codebeschreibung
- Sie müssen in der ersten Zeile einen Kommentar namens Shebang schreiben.
Shebang gibt den Speicherort des Compilers an, ohne den Python-Code nicht als Python erkannt werden kann, was zu unerwartetem Verhalten führt.
- Die dritte Zeile
print ('Content-Type: text / html; charset = utf-8')
fungiert als HTTP-Header und bettet die Ausgabezeichenfolge in den Code innerhalb des HTML-Tags BODY
ein. in der Lage sein.
Die Angabe von "Zeichensatz" ist eine explizite Deklaration des Zeichencodes der Datei.
- Der leere Drucktext in der 4. Zeile wird verwendet, da zwei Zeilenumbrüche erforderlich sind, damit der HTTP-Header in der 3. Zeile ordnungsgemäß funktioniert.
Wenn Sie keinen leeren Text verwenden möchten, können Sie dasselbe tun, indem Sie die Beschreibung des HTTP-Headers auf "print" (Inhaltstyp: text / html; charset = utf-8 \ n \ n) setzen. ..
Führen Sie CGI aus
Die Vorgehensweise zum Ausführen von CGI wird erläutert.
- Erteilen Sie dem Verzeichnis cgi-bin und der ausführbaren Datei die Ausführungsberechtigung.
- Starten Sie den Python-Testserver
- Zugriff mit einem Browser zur Überprüfung
Lokale Entwicklung ist mit den obigen drei Schritten möglich.
Wenn Sie es veröffentlichen möchten, können Sie es mit Apache2 veröffentlichen. (Weitere Informationen finden Sie unter diesen Artikel)
Befehl
user@hostname:~$ ls
cgi-bin
user@hostname:~$ sudo chmod -R +x cgi-bin
python3 -m http.server 8080 --cgi
Serving HTTP on 0.0.0.0 port 8080 (http://0.0.0.0:8080/) ...
Beachten Sie, dass Sie den Server direkt über dem Verzeichnis *** cgi-bin starten müssen. *** ***
Nachdem es auf localhost veröffentlicht wurde, greifen Sie auf [http: // localhost: 8080 / cgi-bin / hello.py](http: // localhost: 8080 / cgi-bin / hello.py) zu. Wenn es angezeigt wird, ist es erfolgreich.
Error
404 Not Found
- Der Pfad ist möglicherweise falsch, da die Datei nicht gefunden werden kann.
--Überprüfen Sie, ob Sie vergessen haben, den Server zu starten.
--Überprüfen Sie, ob die URL und der Dateiname korrekt sind.
403 Forbidden
- Es wird abgespielt, weil Sie keine Zugriffsberechtigung haben.
- Gehen Sie zurück zum Terminal und überprüfen Sie die Berechtigungen mit dem Befehl
ls -l
, um festzustellen, ob x
angehängt ist.
- Wenn Sie auf "http: // localhost: 8080 / cgi-bin" zugreifen, greifen Sie mit einem direkten Link auf die Datei darauf zu.
500 Internal Server Error
- Es ist schwierig, die Ursache zu identifizieren, da sie aufgrund von Serverfehlern als eine Vielzahl von Fehlern angezeigt wird.
- Wenn Sie das Terminal anzeigen, mit dem der Server gestartet wurde, wird das Zugriffsprotokoll unter "HTTP auf 0.0.0.0-Port 8080 (http://0.0.0.0:8080/) ... ... bedienen" angezeigt. Überprüfen Sie daher die Fehlerdetails. Und damit umgehen.
- Wenn Sie das Fehlerprotokoll überprüfen, ist es leichter zu verstehen und kann durch Lesen von unten nach oben effizient behoben werden.
Der Bildschirm wird leer. ・ Der Quellcode wird unverändert angezeigt
--Verbreitet
- Es besteht eine hohe Wahrscheinlichkeit, dass die Beschreibung des HTTP-Headers falsch ist.
--Überprüfen Sie, ob die Anzahl der Zeilenumbrüche korrekt ist und ob Sie das Semikolon nicht vergessen oder einen Fehler gemacht haben.
- Oder überprüfen Sie, ob Sie einen Fehler in Shebangs Pfad oder Grammatik gemacht haben.
- Der Quellcode wird unverändert angezeigt
- Stellen Sie sicher, dass Sie
--cgi
nicht vergessen haben, wenn Sie den Server starten.