動画から大量の画像を抽出して、ブラウザでいじくり回したかったため、
FlaskとVue.jsを使った機能を作り、コアサーバで動かそうとしたが、
ファイルをアップロードしただけでは動かなかった。
FlaskはApacheなどのwebサーバと連携していないため、
PHPのようにファイルをアップロードしただけでは、ブラウザからアクセスできない。
動かすためには、まずコアサーバにSSHでアクセスし、以下のコマンドでFlaskが入っているか確認する。
python3 -m pip list
入っていなければインストールし、もしpipのアップグレードが必要だと言われた場合は、先に対応しておく。
python3 -m pip install --upgrade pip --user
python3 -m pip install Flask --user
その後、作ったプログラムを置く予定のディレクトリに、以下の.htaccessを置く。
AddHandler cgi-script .py
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.py/$1 [QSA,L]
.pyファイルをCGIとして動かし、全てのアクセスをindex.pyを経由するようにする。
index.pyでは、FlaskをCGIモードで動くように設定するのがポイント。
#!/usr/local/bin/python3
# coding: utf-8
import cgitb
cgitb.enable()
from wsgiref.handlers import CGIHandler
from server import app
CGIHandler().run(app)
上記でimportするserver.pyでは、Flaskの初期設定やルーティングを書く。
#!/usr/local/bin/python3
# coding: utf-8
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return "Hello!"
if __name__ == '__main__':
app.run()
これでブラウザからアクセスできるようになる。