【사쿠라 렌탈 서버】flask를 사용해 본다.
소개
렌탈한 사쿠라 렌탈 서버(스탠다드 플랜)에 API 서버를 세우려고 flask를 사용해 본다. (사쿠라 렌탈 서버에서는 상주 데몬 프로세스가 허용되지 않으므로 주의가 필요)
막힌 점도 있었으므로, 그 대처법도 함께 기록한다.
환경 설정은 다음 페이지를 따랐다.
Try #019 – 사쿠라 렌탈 서버에서 Flask를 이용한 주소 검색 API를 구축해 보았다
만드는 응용 프로그램은 다음 페이지를 따랐다.
【사쿠라 렌탈 서버】 (초보자용) Python과 pyenv와 Flask의 환경 구축 방법. |csh의 경우
절차
.htaccess
, app.py
, index.cgi
https://(UserName).sakura.ne.jp/hello/
로 이동 .htaccess
: Apache 제어 설정 파일 중 하나. 통상 Apache의 제어를 실시한다. 사쿠라 렌탈 서버상에서 자신 전용으로 설정을 바꾸고 싶은 경우는 httpd.conf
를 변경한다.cman.jp: 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)
발생한 오류와 그 대응
크롬에서 액세스 할 때
chrome에서
.htaccess
에 액세스할 때 다음 표시가.파일 직접 런타임
ssh 연결된 사쿠라 서버의 명령줄에서
https://(UserName).sakura.ne.jp/hello/
명령으로 직접 $python index.cgi
를 실행해 보면 다음과 같은 오류가 발생합니다.index.cgi 다시 쓰기
이 오류가 다음 페이지와 동일한 오류이므로 다음 페이지에 작성된
index.cgi
파일을 편집합니다.사쿠라의 렌탈 서버에서 Flask를 사용하려고 곤란한 것을 남겨 둡니다.
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
#-------------------以下、書き換え部分------------------------
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):
# ※要書き換え
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)
index.cgi 직접 실행
이번에는 오류없이 실행할 수있었습니다.
그러나 여전히 크롬에서 액세스하면 internal server error가 발생합니다.
파일 액세스 권한 재작성
index.cgi
를 실행하면, 현재 상태에서는 이하.여기서
$ ls -la
로 실행 권한을 부여합니다.이렇게하면 Chrome에서도 hello world를 확인할 수있었습니다!
결국
덧붙여서, 권한은 어느 정도 있으면 좋을까라고 생각해 여러가지 시험한 결과, 최소한
있다면 정상적으로 반응을 반환하는 것으로 나타났습니다.
app.py에 무슨 권한도 부여되어 있지 않아도 움직이는 것은 이상하다.
참고문헌
Try #019 – 사쿠라 렌탈 서버에서 Flask를 이용한 주소 검색 API를 구축해 보았다
사쿠라의 렌탈 서버에서 Flask를 사용하려고 곤란한 것을 남겨 둡니다.
chmod? chown? 잘 모르는 사람을 위한 파일 권한계 정리
Reference
이 문제에 관하여(【사쿠라 렌탈 서버】flask를 사용해 본다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ninoko1995/items/8b01fd02bada3a2fa794텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)