[PYTHON] [Sakura-Mietserver] Versuchen Sie es mit einer Flasche.

Einführung

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.

Versuch Nr. 019 - Ich habe versucht, eine Adressensuch-API mit Flask auf Sakuras Mietserver zu erstellen

[Sakura Rental Server](Für Anfänger) So erstellen Sie eine Umgebung für Python, Pyenv und Flask. | Für csh

Verfahren

--Erstellen Sie drei Dateien unter / home / (Benutzername) / www / hello: .htaccess, app.py, index.cgi

.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".

cman.jp: Was ist 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)

Der aufgetretene Fehler und seine Antwort

Beim Zugriff von Chrom

Beim Zugriff auf "https: // (Benutzername) .sakura.ne.jp / hello /" über Chrome wird die folgende Anzeige angezeigt. スクリーンショット 2019-11-02 17.07.59.png

Bei der direkten Ausführung von Dateien

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. スクリーンショット 2019-11-02 17.09.49.png

Umschreiben von index.cgi

Dieser Fehler war der gleiche wie auf der folgenden Seite. Bearbeiten Sie daher die Datei "index.cgi" wie auf der folgenden Seite beschrieben.

Hinterlassen Sie ein Problem, wenn Sie versuchen, Flask auf dem Vermietungsserver von Sakura zu verwenden.

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)

Direkte Ausführung von index.cgi

Diesmal konnte ich es fehlerfrei ausführen. スクリーンショット 2019-11-02 17.22.19.png

Beim Zugriff von Chrome aus tritt jedoch weiterhin ein interner Serverfehler auf.

Umschreiben von Dateizugriffsberechtigungen

Wenn Sie $ ls -la ausführen, ist dies derzeit wie folgt. スクリーンショット 2019-11-02 17.27.06.png

Hier wird die Ausführungsberechtigung als "chmod 744 index.cgi" angegeben. スクリーンショット 2019-11-02 17.28.48.png

Auf diese Weise konnte ich die Hallo-Welt sogar aus Chrom bestätigen!

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

Schlussfolgern

Ü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. スクリーンショット 2019-11-02 17.36.30.png

Es ist seltsam, dass app.py auch dann funktioniert, wenn es keine Berechtigungen hat.

Verweise

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

[Sakura-Mietserver] Versuchen Sie es mit einer Flasche.
Versuchen Sie es mit dem Webanwendungsframework Flask
Versuchen Sie es mit Tkinter
Versuchen Sie es mit Docker-Py
Versuchen Sie es mit einem Ausstecher
Versuchen Sie es mit PDFMiner
Versuchen Sie es mit Geopandas
Versuchen Sie es mit scipy
Versuchen Sie es mit pandas.DataFrame
Versuchen Sie es mit Django-Swiftbrowser
Versuchen Sie es mit matplotlib
Versuchen Sie es mit tf.metrics
Versuchen Sie es mit PyODE
Versuchen Sie, Blueprint with Flask zu verwenden, um Controller zu trennen
Versuchen Sie, mit Node.js einen HTTP-Server zu erstellen
Versuchen Sie es mit virtualenv (virtualenvwrapper)
[Azure] Versuchen Sie, Azure-Funktionen zu verwenden
Versuchen Sie es jetzt mit virtualenv
Versuchen Sie es mit W & B.
Versuchen Sie es mit Django templates.html
[Kaggle] Versuchen Sie es mit LGBM
Versuchen Sie es mit dem Feed-Parser von Python.
Versuchen Sie es mit Pythons Tkinter
[Python] Ich habe versucht, einen lokalen Server mit flask auszuführen
Versuchen Sie es mit Tweepy [Python2.7]
Versuchen Sie es mit Pytorchs collate_fn
[Sakura Rental Server] (Für Anfänger) So erstellen Sie eine Umgebung für Python, Pyenv und Flask. Für csh
Versuchen Sie, PythonTex mit Texpad zu verwenden.
[Python] Versuchen Sie, Tkinters Leinwand zu verwenden
Versuchen Sie es mit Jupyters Docker-Image
Versuchen Sie die Funktionsoptimierung mit Hyperopt
Versuchen Sie es mit matplotlib mit PyCharm
Versuchen Sie es mit Azure Logic Apps
Versuchen Sie es mit Kubernetes Client -Python-
[Kaggle] Versuchen Sie es mit xg boost
Versuchen Sie es mit der Twitter-API
Probieren Sie den Taxii-Server aus (1. Servereinstellungen)
Versuchen Sie es mit AWS SageMaker Studio
Versuchen Sie, automatisch mit Selen zu twittern.
Versuchen Sie es mit SQLAlchemy + MySQL (Teil 1)
Versuchen Sie es mit der Twitter-API
Versuchen Sie es mit SQLAlchemy + MySQL (Teil 2)
Versuchen Sie es mit der Vorlagenfunktion von Django
Versuchen Sie es mit der PeeringDB 2.0-API
Versuchen Sie es mit der Entwurfsfunktion von Pelican
Versuchen Sie es mit pytest-Overview und Samples-
Versuchen Sie es mit Folium mit Anakonda