Ich habe versucht, mit flask einen API-Server auf dem gemieteten Sakura-Mietserver einzurichten (Standardplan). (** Bitte beachten Sie, dass der residente Daemon-Prozess auf dem Sakura-Mietserver nicht zulässig ist **) Da einige Punkte verstopft waren, werde ich auch aufzeichnen, wie man damit umgeht.
--Erstellen Sie drei Dateien unter / home / (Benutzername) / www / hello: .htaccess
, app.py
, index.cgi
https: // (Benutzername) .sakura.ne.jp / hello /
von Chrome.htaccess
: Eine der Steuerungskonfigurationsdateien von Apache. Da "httpd.conf", das normalerweise Apache steuert, den gesamten WEB-Server steuert, kann dies nur der Serveradministrator ändern. Wenn Sie die Einstellungen auf dem Sakura-Mietserver selbst ändern möchten, ändern Sie ".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)
Beim Zugriff auf "https: // (Benutzername) .sakura.ne.jp / hello /" über Chrome wird die folgende Anzeige angezeigt.
Wenn ich versuche, index.cgi
direkt mit dem Befehl $ python index.cgi
in der Befehlszeile des mit ssh verbundenen Sakura-Servers auszuführen, tritt der folgende Fehler auf.
Dieser Fehler war der gleiche wie auf der folgenden Seite. Bearbeiten Sie daher die Datei "index.cgi" wie auf der folgenden Seite beschrieben.
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
#-------------------Unten der umgeschriebene Teil------------------------
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):
#* Umschreiben erforderlich
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)
Diesmal konnte ich es fehlerfrei ausführen.
Beim Zugriff von Chrome aus tritt jedoch weiterhin ein interner Serverfehler auf.
Wenn Sie $ ls -la
ausführen, ist dies derzeit wie folgt.
Hier wird die Ausführungsberechtigung als "chmod 744 index.cgi" angegeben.
Auf diese Weise konnte ich die Hallo-Welt sogar aus Chrom bestätigen!
Übrigens, als Ergebnis verschiedener Versuche, sich zu fragen, wie viel Autorität zumindest sein sollte
--Besitzer Leseberechtigung für .htaccess --Besitzer Lese- / Ausführungsberechtigung in index.cgi
Es wurde festgestellt, dass die Reaktion normal zurückkehren würde, wenn dies der Fall wäre.
Es ist seltsam, dass app.py auch dann funktioniert, wenn es keine Berechtigungen hat.
Versuch # 019 - Ich habe versucht, eine Adressensuch-API mit Flask auf Sakuras Mietserver zu erstellen Hinterlassen Sie ein Problem, wenn Sie versuchen, Flask auf Sakuras Mietserver zu verwenden. chmod? chown? Zusammenfassung des Dateiberechtigungssystems für diejenigen, die es nicht gut verstehen
Recommended Posts