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.
--Créez trois fichiers sous / home / (UserName) / www / hello: .htaccess
, ʻapp.py, ʻindex.cgi
https: // (UserName) .sakura.ne.jp / hello /
à partir de chrome.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
.
.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)
Lors de l'accès à https: // (UserName) .sakura.ne.jp / hello /
à partir de chrome, l'affichage suivant s'affiche.
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.
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)
Cette fois, j'ai pu l'exécuter sans aucune erreur.
Cependant, une erreur de serveur interne se produit toujours lors de l'accès à partir de Chrome.
Lorsque vous exécutez $ ls -la
, c'est actuellement comme suit.
Ici, l'autorisation d'exécution est donnée sous la forme chmod 744 index.cgi
.
En faisant cela, j'ai pu confirmer le bonjour le monde même à partir de chrome!
À 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.
Il est étrange que app.py fonctionne même s'il n'a aucune autorisation.
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