Führen Sie Pythons CGI auf CORESERVER aus

Überblick

Diese Umgebung

Einstellungen: Erweiterbare CGI-Dateierweiterung auf cgi oder py

Die CGI-Datei kann von Anfang an als CGI ausgeführt werden, sodass Sie sie mit Ausführungsberechtigung festlegen können.

$ ls -l ~/public_html/hello.cgi
-r-xr-xr-x 1 alice hpusers 414 12. Dezember 20:08 /virtual/alice/public_html/hello.cgi

Wenn die Erweiterung py sein soll, ist die .py-Datei nicht für die Ausführung als CGI ausgelegt. Platzieren Sie daher eine .htaccess-Datei, in der die Einstellungen für die Ausführung als CGI beschrieben sind.

$ ls -l ~/public_html/.htaccess 
-rw-r--r--1 alice hpusers 27 Dezember 12 18:09 /virtual/alice/public_html/.htaccess

Der Inhalt von .htaccess wird wie folgt beschrieben.

.htaccess


AddHandler cgi-script .py

Hello World-Anzeigebeispiel (hello.cgi)

Quellcode-Speicherort

$ ls -l ~/public_html/hello.cgi
-r-xr-xr-x 1 alice hpusers 414 12. Dezember 20:08 /virtual/alice/public_html/hello.cgi

Quellcode

#!/usr/local/bin/python3

import io
import sys

#Geben Sie die Zeichenkodierung des Ausgabestreams an
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

#HTTP-Header
print('Content-Type: text/html; charset=utf-8')
print() # blank line, end of headers

#HTML-Body
print('<html><body>')
print('Hello, world.<br>')
print('Hallo Welt.<br>')
print('</body></html>')

Zugriffsergebnis

$ curl http://alice.b1.coreserver.jp/hello.cgi
<html><body>
Hello, world.<br>
Hallo Welt.<br>
</body></html>

Beispiel für die Anzeige von Eingabewerten (message.py)

Quellcode-Speicherort

$ ls -l ~/public_html/message.py 
-r-xr-xr-x 1 alice hpusers 565 12. Dezember 20:14 /virtual/alice/public_html/message.py

Quellcode

message.py


#!/usr/local/bin/python3

import cgi
import html
import io
import sys

#Geben Sie die Zeichenkodierung des Ausgabestreams an
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

#Ruft den Wert des Nachrichtenparameters ab
form = cgi.FieldStorage()
message = form.getfirst('message', 'Hello, world.')

#HTTP-Header
print('Content-Type: text/html; charset=utf-8')
print() # blank line, end of headers

#HTML-Body
print('<html><body>')
print(f'message: {html.escape(message)}') #HTML-Escape und Ausgabe
print('</body></html>')

Zugriffsergebnis

$ curl http://alice.b1.coreserver.jp/message.py?message=%E7%BD%AA%E3%81%A8%C3%97
<html><body>
message:Sünde und ×
</body></html>

Beispiel für die Nutzung der externen Bibliothek (draw.py)

Installationspaket

Installieren Sie diesmal die Pakete NumPy und Matplotlib im Verzeichnis ~ / my-space.

$ python3 -m pip install numpy matplotlib --target ~/my-space

Das Paket wird im Verzeichnis ~ / my-space installiert.

$ ls ~/my-space
__pycache__                                 numpy
bin                                         numpy-1.17.4.dist-info
cycler-0.10.0.dist-info                     pkg_resources
cycler.py                                   pylab.py
dateutil                                    pyparsing-2.4.5.dist-info
easy_install.py                             pyparsing.py
kiwisolver-1.1.0.dist-info                  python_dateutil-2.8.1.dist-info
kiwisolver.cpython-36m-x86_64-linux-gnu.so  setuptools
matplotlib                                  setuptools-42.0.2.dist-info
matplotlib-3.1.2-py3.6-nspkg.pth            six-1.13.0.dist-info
matplotlib-3.1.2.dist-info                  six.py
mpl_toolkits

Quellcode-Speicherort

$ ls -l ~/public_html/draw.py 
-r-xr-xr-x 1 alice hpusers 922 15. Dezember 01:53 /virtual/alice/public_html/draw.py

Quellcode

draw.py


#!/usr/local/bin/python3

import io
import sys

#Fügen Sie dem Modul-Suchpfad den Bibliothekspfad hinzu
sys.path.append('../my-space')

#Laden Sie NumPy und Matplotlib
import numpy as np
import matplotlib
import matplotlib.pyplot as plt

#Daten erstellen
x = np.arange(0, 6, 0.1) #0 bis 6 0.In Schritten von 1 generieren
y1 = np.sin(x)
y2 = np.cos(x)

#Zeichnen eines Diagramms
plt.figure(figsize=(4, 3), dpi=160) #Bildgröße
plt.plot(x, y1, label='sin')
plt.plot(x, y2, linestyle = '--', label='cos') #Zeichnen Sie mit gestrichelten Linien
plt.xlabel('x') #x-Achsenbeschriftung
plt.ylabel('y') #Beschriftung der y-Achse
plt.title('sin & cos') #Titel
plt.legend() #Gebrauchsanweisung

#Generieren Sie eine PNG-Bildbytezeichenfolge
image = io.BytesIO()
plt.savefig(image, format='png')
image.seek(0)

#HTTP-Header
sys.stdout.buffer.write(b'Content-Type: image/png\n\n')

#Bildbinärdaten ausgeben
sys.stdout.buffer.write(image.read())

Zugriffsergebnis

$ curl --dump-header - -s http://alice.b1.coreserver.jp/draw.py --output a.png
HTTP/1.1 200 OK
Date: Sat, 14 Dec 2019 17:05:05 GMT
Server: Apache
Vary: User-Agent
Transfer-Encoding: chunked
Content-Type: image/png

Eine PNG-Datei gespeichert.

a.png

Referenzmaterial

Recommended Posts

Führen Sie Pythons CGI auf CORESERVER aus
Führen Sie Openpose unter Python (Windows) aus.
Führen Sie Tensorflow 2.x unter Python 3.7 aus
Führen Sie den Unix-Befehl auf Python aus
Führen Sie in Python geschriebenes CGI auf Sakuras Mietserver aus
Führen Sie Python planmäßig auf AWS Lambda aus
Führen Sie das Docker-Image von TensorFlow unter Python3 aus
Unter Windows erstellte Python-CGI-Datei
Führen Sie Python regelmäßig auf Heroku Scheduler aus
Führen Sie das Servo mit Python unter ESP32 (Windows) aus.
Python unter Windows
Twitter mit Python3
[Python] Führen Sie Flask in Google App Engine aus
Python CGI-Grundlagen
Erstellen Sie einen CGI-Server, der unter Python 3 in Docker ausgeführt wird
Führen Sie AzureKinect an Heiligabend in Python aus.
Python auf Mac
Lassen Sie einen Servomotor mit Python auf Raspberry Pi 3 laufen
[Python] Führen Sie Headless Chrome unter AWS Lambda aus
Führen Sie Python-Code in der A2019 Community Edition aus
Python auf Windbg
Führen Sie Python in C ++ unter Visual Studio 2017 aus
Führen Sie den Python-WSGI-Server auf der NGINX-Einheit aus
Führen Sie regelmäßig Python-Programme auf AWS Lambda aus
Installieren Sie Python3.5 + NumPy + SciPy und führen Sie es unter Windows 10 aus
Setzen Sie MicroPython unter Windows ein, um ESP32 unter Python auszuführen
Führen Sie Python YOLOv3 in C ++ unter Visual Studio 2017 aus
So führen Sie MeCab unter Ubuntu 18.04 LTS Python aus
Führen Sie Zookeeper x Python (Kazoo) unter Mac OS X aus
Führen Sie die Pip-Installation unter MacOS Python 3.7 oder höher aus
Führen Sie Flask unter CentOS mit Python3.4, Gunicorn + Nginx aus.
TensorFlow: Führen Sie in Python gelernte Daten unter Android aus
Führen Sie Python auf Apache aus, um InfluxDB-Daten anzuzeigen
Python Conda mit Cygwin
Installieren Sie Python auf der WSL
Führen Sie Python mit VBA aus
PyOpenGL-Setup unter Python 3
Installieren Sie Python auf Pidora.
Führen Sie prepDE.py mit python3 aus
Installieren Sie Scrapy auf Python3
Führen Sie Django auf PythonAnywhere aus
Installieren Sie Python auf dem Mac
Führen Sie Python aus Excel aus
Führen Sie mysqlclient auf Lambda aus
Führen Sie Blender mit Python aus
Pandas auf python2.6 installieren
Python Basic ② in Windows
Installieren Sie Python unter Windows
Installieren Sie Python 2.7.3 unter CentOS 5.4
Führen Sie OpenMVG auf einem Mac aus
Build Python auf Ubuntu
Installieren Sie Python 3.3 unter Ubuntu 12.04
Installieren Sie Python 3.4 auf einem Mac
Cloud Run Tutorial (Python)
Installieren Sie Python 3.6 auf Docker
Führen Sie iperf mit Python aus
Installieren Sie Apache 2.4 unter Ubuntu 19.10 Eoan Ermine und führen Sie CGI aus
[CGI] Führen Sie das Server-Python-Programm mit Vue.js + axios aus und rufen Sie die Ausgabedaten ab
Aktivieren Sie Python virtualenv unter Windows
Richten Sie Python 3.4 unter Ubuntu ein
Führen Sie Jupyter unter Ubuntu unter Windows aus