kuroの覚え書き

96の個人的覚え書き

XREAサーバを使う(2) Flask編

Homebrewのインストールは未完。Gitはインストールできたがcurlなど他にも対応しなければならないし、そもそもそこまでいろんなアプリを入れたいわけでもない。せいぜいblastとsamtoolsくらいなので、個別インストールしたほうが早そうなので、一旦ペンディング

とにかくFlaskでウェブアプリを走らせたい。

以前Value serverではできていたはずだが、どうやっていたかすっかりさっぱり忘れていて全然うまく走らない。
まずはXREA個別の事情もあるかもしれないのでstep by stepでクリアしていこう。

最初に確認しておくこととしてはどうやら.htaccessがHTMLルート(root /public_html)でしか働かないかもしれないとのこと。
またここにインデックスファイルを置いておく必要があり、それは.pyではまずいらしいこと。なのでファイル名はindex.cgiとしておくことにする。

.htaccess

#AddHandler cgi-script .py
#DirectoryIndex index.cgi
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /index.cgi/$1 [QSA,L]
<Files ~ "\.py$">
    deny from all
</Files>

index.cgi

#!/usr/local/bin/python3
# coding: utf-8

import cgitb
cgitb.enable()

from wsgiref.handlers import CGIHandler

from main import app
import os
os.environ["REQUEST_METHOD"] = "GET"

CGIHandler().run(app)

main.py

#!/usr/local/bin/python3
# -*- coding: utf-8 -*-

from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
    return "Hello world!"
if __name__ == '__main__':
    app.run()

このような感じでファイルを作成し、
.htaccess 644
index.cgi 700
main.py 700
のようにアクセス権を設定して

ブラウザでアクセスすると

Hello world!"

が無事に表示された。


最初index.cgi

import os
os.environ["REQUEST_METHOD"] = "GET"

この部分をなしにしていると
500 internal error
がでてぜんぜん動かなかったのだが、試しに

$ python3 index.cgi

と直接起動してみたら

KeyError: 'REQUEST_METHOD'
Status: 500 Internal Server Error
Content-Type: text/plain
Content-Length: 59

のようなエラーが出ていることがわかったので
KeyError: 'REQUEST_METHOD'
で検索して、
coffee-blue-mountain.com
こちらのサイトを参考にして対応した。

これがわかるまでに半日費やした。