[PYTHON] [Serveur de location Sakura] Essayez d'utiliser flask.

introduction

J'ai essayé d'utiliser flask pour configurer un serveur API sur le serveur de location Sakura loué (plan standard). (** Veuillez noter que le processus de démon résident n'est pas autorisé sur le serveur de location Sakura **) Puisqu'il y avait des points qui étaient obstrués, je noterai également comment les traiter.

Essayez # 019 - J'ai essayé de créer une API de recherche d'adresses en utilisant Flask sur le serveur de location de Sakura

[Sakura Rental Server](Pour les débutants) Comment créer un environnement pour Python, pyenv et Flask. | Pour csh

procédure

--Créez trois fichiers sous / home / (UserName) / www / hello: .htaccess, ʻapp.py, ʻindex.cgi

.htaccess: l'un des fichiers de configuration de contrôle d'Apache. Puisque httpd.conf, qui contrôle normalement Apache, contrôle tout le serveur WEB, seul l'administrateur du serveur peut le modifier. Si vous souhaitez modifier les paramètres pour vous-même sur le serveur de location Sakura, modifiez .htaccess.

cman.jp: Qu'est-ce que htaccess?

.htaccess


RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /hello/index.cgi/$1 [QSA,L]
<Files ~ "\.py$">
  deny from all
</Files>

app.py


#!/home/miyablo/.pyenv/versions/flask_peewee_3.6.4/bin/python
# -*- coding: utf-8 -*-
from flask import Flask
app = Flask(__name__)

@app.route('/')
def index():
    return "Hello World!\n"

if __name__ == '__main__':
    app.run()

index.cgi


#!/home/miyablo/.pyenv/versions/flask_peewee_3.6.4/bin/python

import cgitb
cgitb.enable()

from wsgiref.handlers import CGIHandler
from app import app
CGIHandler().run(app)

L'erreur qui s'est produite et sa réponse

Lors de l'accès à partir de Chrome

Lors de l'accès à https: // (UserName) .sakura.ne.jp / hello / à partir de chrome, l'affichage suivant s'affiche. スクリーンショット 2019-11-02 17.07.59.png

Lors de l'exécution directe de fichiers

Lorsque j'essaye d'exécuter ʻindex.cgi directement avec la commande $ python index.cgi` sur la ligne de commande du serveur Sakura connecté à ssh, l'erreur suivante se produit. スクリーンショット 2019-11-02 17.09.49.png

Réécriture index.cgi

Cette erreur était la même que celle de la page suivante, donc éditez le fichier ʻindex.cgi` comme décrit sur la page suivante.

Laisser un problème en essayant d'utiliser Flask sur le serveur de location de Sakura.

index.cgi


#!/home/miyablo/.pyenv/versions/flask_peewee_3.6.4/bin/python

import cgitb
cgitb.enable()

from wsgiref.handlers import CGIHandler
from app import app
#-------------------Ci-dessous, la partie réécrite------------------------
from sys import path

path.insert(0, '/miyablo/www/hello/')
from app import app
class ProxyFix(object):
  def __init__(self, app):
      self.app = app
  def __call__(self, environ, start_response):
      #* Réécriture requise
      environ['SERVER_NAME'] = "miyablo.sakura.ne.jp"
      environ['SERVER_PORT'] = "80"
      environ['REQUEST_METHOD'] = "GET"
      environ['SCRIPT_NAME'] = ""
      environ['PATH_INFO'] = "/"
      environ['QUERY_STRING'] = ""
      environ['SERVER_PROTOCOL'] = "HTTP/1.1"
      return self.app(environ, start_response)
if __name__ == '__main__':
   app.wsgi_app = ProxyFix(app.wsgi_app)
   CGIHandler().run(app)

Exécution directe de index.cgi

Cette fois, j'ai pu l'exécuter sans aucune erreur. スクリーンショット 2019-11-02 17.22.19.png

Cependant, une erreur de serveur interne se produit toujours lors de l'accès à partir de Chrome.

Réécriture des autorisations d'accès aux fichiers

Lorsque vous exécutez $ ls -la, c'est actuellement comme suit. スクリーンショット 2019-11-02 17.27.06.png

Ici, l'autorisation d'exécution est donnée sous la forme chmod 744 index.cgi. スクリーンショット 2019-11-02 17.28.48.png

En faisant cela, j'ai pu confirmer le bonjour le monde même à partir de chrome!

スクリーンショット 2019-11-02 17.29.39.png

De conclure

À propos, après avoir essayé diverses choses, on se demande quelle autorité devrait avoir, au moins

Il a été constaté que s'il y en avait, la réaction reviendrait normalement. スクリーンショット 2019-11-02 17.36.30.png

Il est étrange que app.py fonctionne même s'il n'a aucune autorisation.

Les références

Essayez # 019 - J'ai essayé de créer une API de recherche d'adresses en utilisant Flask sur le serveur de location de Sakura Laisser un problème en essayant d'utiliser Flask sur le serveur de location de Sakura. chmod? chown? Résumé du système d'autorisation de fichiers pour ceux qui ne comprennent pas bien

Recommended Posts

[Serveur de location Sakura] Essayez d'utiliser flask.
Essayez d'utiliser le framework d'application Web Flask
Essayez d'utiliser Tkinter
Essayez d'utiliser docker-py
Essayez d'utiliser Cookiecutter
Essayez d'utiliser PDFMiner
Essayez d'utiliser des géopandas
Essayez d'utiliser scipy
Essayez d'utiliser pandas.DataFrame
Essayez d'utiliser django-swiftbrowser
Essayez d'utiliser matplotlib
Essayez d'utiliser tf.metrics
Essayez d'utiliser PyODE
Essayez d'utiliser Blueprint avec Flask pour séparer les contrôleurs
Essayez de créer un serveur HTTP en utilisant Node.js
Essayez d'utiliser virtualenv (virtualenvwrapper)
[Azure] Essayez d'utiliser Azure Functions
Essayez d'utiliser virtualenv maintenant
Essayez d'utiliser W & B
Essayez d'utiliser Django templates.html
[Kaggle] Essayez d'utiliser LGBM
Essayez d'utiliser l'analyseur de flux de Python.
Essayez d'utiliser Tkinter de Python
[Python] J'ai essayé d'exécuter un serveur local en utilisant flask
Essayez d'utiliser Tweepy [Python2.7]
Essayez d'utiliser collate_fn de Pytorch
[Sakura Rental Server] (Pour les débutants) Comment créer un environnement pour Python, pyenv et Flask. | Pour csh
Essayez d'utiliser PythonTex avec Texpad.
[Python] Essayez d'utiliser le canevas de Tkinter
Essayez d'utiliser l'image Docker de Jupyter
Essayez l'optimisation des fonctions à l'aide d'Hyperopt
Essayez d'utiliser matplotlib avec PyCharm
Essayez d'utiliser Azure Logic Apps
Essayez d'utiliser Kubernetes Client -Python-
[Kaggle] Essayez d'utiliser xg boost
Essayez d'utiliser l'API Twitter
Essayez le serveur Taxii (1. Paramètres du serveur)
Essayez d'utiliser AWS SageMaker Studio
Essayez de tweeter automatiquement en utilisant Selenium.
Essayez d'utiliser SQLAlchemy + MySQL (partie 1)
Essayez d'utiliser l'API Twitter
Essayez d'utiliser SQLAlchemy + MySQL (partie 2)
Essayez d'utiliser la fonction de modèle de Django
Essayez d'utiliser l'API PeeringDB 2.0
Essayez d'utiliser la fonction de brouillon de Pelican
Essayez d'utiliser pytest-Overview and Samples-
Essayez d'utiliser le folium avec anaconda