Exécutez le CGI de Python sur CORESERVER

Aperçu

--Exécuter le CGI de Python sur le serveur de location GMO DigiLock "Core Server"

Cet environnement

Paramètres: extension de fichier exécutable CGI vers cgi ou py

Le fichier .cgi peut être exécuté en tant que CGI depuis le début, vous pouvez donc le définir avec l'autorisation d'exécution.

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

Si vous souhaitez que l'extension soit py, le fichier .py n'est pas conçu pour s'exécuter en tant que CGI, alors placez un fichier .htaccess qui décrit les paramètres d'exécution en tant que CGI.

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

Le contenu de .htaccess est décrit comme suit.

.htaccess


AddHandler cgi-script .py

Exemple d'affichage Hello World (hello.cgi)

Emplacement du code source

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

Code source

#!/usr/local/bin/python3

import io
import sys

#Spécifiez le codage des caractères du flux de sortie
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

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

#Corps HTML
print('<html><body>')
print('Hello, world.<br>')
print('Bonjour le monde.<br>')
print('</body></html>')

Résultat d'accès

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

Exemple d'affichage de la valeur d'entrée (message.py)

Emplacement du code source

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

Code source

message.py


#!/usr/local/bin/python3

import cgi
import html
import io
import sys

#Spécifiez le codage des caractères du flux de sortie
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

#Obtenir la valeur du paramètre de message
form = cgi.FieldStorage()
message = form.getfirst('message', 'Hello, world.')

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

#Corps HTML
print('<html><body>')
print(f'message: {html.escape(message)}') #Sortie et sortie HTML
print('</body></html>')

Résultat d'accès

$ curl http://alice.b1.coreserver.jp/message.py?message=%E7%BD%AA%E3%81%A8%C3%97
<html><body>
message:Péché et ×
</body></html>

Exemple d'utilisation de la bibliothèque externe (draw.py)

Installer le paquet

Cette fois, installez les packages NumPy et Matplotlib dans le répertoire ~ / my-space.

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

Le package est installé dans le répertoire ~ / my-space.

$ 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

Emplacement du code source

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

Code source

draw.py


#!/usr/local/bin/python3

import io
import sys

#Ajouter le chemin de la bibliothèque au chemin de recherche du module
sys.path.append('../my-space')

#Charger NumPy et Matplotlib
import numpy as np
import matplotlib
import matplotlib.pyplot as plt

#Créer des données
x = np.arange(0, 6, 0.1) #0 à 6 0.Générer par incréments de 1
y1 = np.sin(x)
y2 = np.cos(x)

#Dessiner un graphique
plt.figure(figsize=(4, 3), dpi=160) #Taille de l'image
plt.plot(x, y1, label='sin')
plt.plot(x, y2, linestyle = '--', label='cos') #Dessiner avec des lignes brisées
plt.xlabel('x') #étiquette de l'axe des x
plt.ylabel('y') #étiquette de l'axe y
plt.title('sin & cos') #Titre
plt.legend() #Guide d'utilisation

#Générer une chaîne d'octets d'image PNG
image = io.BytesIO()
plt.savefig(image, format='png')
image.seek(0)

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

#Données binaires d'image de sortie
sys.stdout.buffer.write(image.read())

Résultat d'accès

$ 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

Un fichier.png a été enregistré.

a.png

Matériel de référence

Recommended Posts

Exécutez le CGI de Python sur CORESERVER
Exécutez Openpose sur Python (Windows)
Exécutez Tensorflow 2.x sur Python 3.7
Exécutez la commande unix sur python
Exécutez CGI écrit en python sur le serveur de location de Sakura
Exécutez Python selon la planification sur AWS Lambda
Exécutez l'image Docker de TensorFlow sur Python3
Fichier CGI Python créé sous Windows
Exécutez régulièrement Python sur Heroku Scheduler
Exécutez le servo avec Python sur ESP32 (Windows)
Python sur Windows
twitter avec python3
[Python] Exécutez Flask sur Google App Engine
Principes de base de Python CGI
Créer un serveur CGI fonctionnant sur Python 3 sur Docker
Exécutez AzureKinect en Python la veille de Noël.
python sur mac
Exécutez un servomoteur en utilisant python sur Raspberry Pi 3
[Python] Exécutez Headless Chrome sur AWS Lambda
Exécutez le code Python sur A2019 Community Edition
Python sur Windbg
Exécutez Python en C ++ sur Visual Studio 2017
Exécutez le serveur python wsgi sur l'unité NGINX
Exécutez régulièrement des programmes Python sur AWS Lambda
Installez et exécutez Python3.5 + NumPy + SciPy sur Windows 10
Mettez MicroPython sur Windows pour exécuter ESP32 sur Python
Exécutez Python YOLOv3 en C ++ sur Visual Studio 2017
Comment exécuter MeCab sur Ubuntu 18.04 LTS Python
Exécutez Zookeeper x python (kazoo) sur Mac OS X
Exécutez l'installation de pip sur MacOS Python 3.7 ou version ultérieure
Exécutez Flask sur CentOS avec python3.4, Gunicorn + Nginx.
TensorFlow: exécuter des données apprises en Python sur Android
Exécutez Python sur Apache pour afficher les données InfluxDB
Conda Python avec Cygwin
Installer python sur WSL
Exécutez Python avec VBA
Configuration de PyOpenGL sur Python 3
Installez Python sur Pidora.
Exécutez prepDE.py avec python3
Installez Scrapy sur python3
Exécutez Django sur PythonAnywhere
Installez Python sur Mac
Exécutez Python à partir d'Excel
Exécutez mysqlclient sur Lambda
Exécutez Blender avec python
Installer des pandas sur python2.6
python basic ② sous windows
Installez python sur Windows
Installez Python 2.7.3 sur CentOS 5.4
Exécutez OpenMVG sur Mac
construire Python sur Ubuntu
Installez Python 3.3 sur Ubuntu 12.04
Installez Python 3.4 sur Mac
Tutoriel Cloud Run (python)
Installez Python 3.6 sur Docker
Exécutez iperf avec python
Installez Apache 2.4 sur Ubuntu 19.10 Eoan Ermine et exécutez CGI
[CGI] Exécutez le programme Python du serveur avec Vue.js + axios et obtenez les données de sortie
Activer Python virtualenv sous Windows
Configurer Python 3.4 sur Ubuntu
Exécutez Jupyter sur Ubuntu sous Windows