apache prodcution 서버에 플라스크 응용 프로그램을 설치하고 싶습니다. 다음에있는 fcgi 파일로 리디렉션해야Python flask & fast-cgi on apache - 500 내부 서버 오류 (스크립트 헤더가 너무 일찍 끝남)
<IfModule mod_fcgid.c>
AddHandler fcgid-script .fcgi
<Files ~ (\.fcgi)>
SetHandler fcgid-script
Options +SymLinksIfOwnerMatch +ExecCGI
</Files>
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /fcgi-bin/runFlaskApp.fcgi/$1 [QSA,L]
</IfModule>
(설정은 755 chmod를하는) : 나는 다음의 .htaccess 파일을 만든
#!/usr/bin/env python2.7
# -*- coding: UTF-8 -*-
RELATIVE_WEB_URL_PATH = '/app_dict'
import os
# This points to the application on the local filesystem.
LOCAL_APPLICATION_PATH = os.path.expanduser('~') + '/html/app_dict'
import sys
sys.path.insert(0, LOCAL_APPLICATION_PATH)
from flup.server.fcgi import WSGIServer
from tmain import app
class ScriptNamePatch(object):
def __init__(self, app):
self.app = app
def __call__(self, environ, start_response):
environ['SCRIPT_NAME'] = RELATIVE_WEB_URL_PATH
return self.app(environ, start_response)
app = ScriptNamePatch(app)
if __name__ == '__main__':
WSGIServer(app).run()
다음 플라스크 응용 프로그램을 시작한다 대가로 어떤 :
를#!/usr/bin/env python2.7
# -*- coding: utf8 -*-
from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
return "Hello World!"
하지만 웹 사이트에 액세스하려고하면 내부 서버 오류 500이 표시됩니다. 그리고 다음 줄은 아파치 오류 로그에 표시 :
이WSGIServer: missing FastCGI param REQUEST_METHOD required by WSGI!
WSGIServer: missing FastCGI param SERVER_NAME required by WSGI!
WSGIServer: missing FastCGI param SERVER_PORT required by WSGI!
WSGIServer: missing FastCGI param SERVER_PROTOCOL required by WSGI!
Status: 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 12
Hello World!
내가 헤더 보라 : 나는 "python2.7의 runFlaskApp.fcgi"와 함께있는 fcgi 파일을 실행하면
[warn] [client 0.0.0.0] (104)Connection reset by peer: mod_fcgid: error reading data from FastCGI server
[error] [client 0.0.0.0] Premature end of script headers: runFlaskApp.fcgi
는 다음과 같은 반환 오류는 WSGIServer의 컨텍스트에서 실행되지 않기 때문에 발생합니다.
나는 형식이 틀린 코드 행을 추가하여 이미 플라스크 앱에서 예외를 유발하려고했습니다. 하지만 아파치 오류 로그에 예외가 나타나지 않습니다. 이것은 플라스크 앱이 fcgi 스크립트로로드되지 않았 음을 믿게합니다.
더 이상 디버깅 할 방법이 있습니까? 아니면 누구든지이 문제에 대한 해결책을 알고 있습니까?