以前にpythonを使用した簡単な画像処理アプリケーションを作成しましたが、使用環境に難ありということでインターネットさえ使えればどこでもpythonの処理を実行できるように取り組んでいます。(javascriptを使用して処理しようとしましたが、opencvモジュールがそもそも使えないのとpythonに比べてコードが書きにくいという理由で断念しました。)
今回は、その基礎となるhello world をwebページ上に表示するアプリを作成していきます。
目次
サーバーの選び方
pythonファイルがサーバー上で実行されて、返ってきた結果がwebページに表示されるという仕組みのため、別途サーバーを用意する必要があります。
この時、CGI(Common Gateway Interface)対応のサーバーを選ばないとpythonを実行することができません。
無料のものもたくさんありますが、このブログのサーバーがちょうどCGIに対応していたのでそのまま使っていきいます。
サーバーにpipを導入
サーバー上でpythonを実行するためには、pipを導入する必要があります。
導入方法は以下にまとめています。
アプリケーションファイルの作成
サーバー管理画面からFTPにアクセスし、ルートディレクトリにアプリケーションファイルを作成します。
ちなみに、このブログは間違えてルードディレクトリにワードプレスをインストールしてしまったため、CGIが干渉してしまいます。
そのため、サブディレクトリを作成してそこにアプリを作成していきます。
APP_1
作成するアプリのファイル名をAPP_01としました。
ディレクトリは/APP_1となります。
.htaccess
パーミッションは604
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /APP/index.cgi/$1 [QSA,L]
ここで、ルートディレクトリにwordpress用の.htaccessが既にある場合は、mod_rewriteの記述が全ディレクトリに干渉してしまうため以下のコードを付け加えます。
[default]
<IfModule mod_rewrite.c>
RewriteEngine Off
</IfModule>
[/default]
APP.py
パーミッションは600
このファイルにpythonでの処理を記述していきます。
from flask import Flask , render_template
app = Flask(__name__)
@app.route('/')
def hello():
return '<h1>Hello World</h1>'
@app.route('/APP_01/render')
def index():
return render_template('render.html')
if __name__ == '__main__':
app.run(debug=True)
index.cgi
パーミッションは700
#!/usr/local/bin/python3
from wsgiref.handlers import CGIHandler
from APP import app
CGIHandler().run(app)
templates
/app_01/にtemplatesフォルダを作成します。
その中に以下のhtmlファイルを作成します。
render.html
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<h1>render template</h1>
</body>
</html>
パーミッションは604
以上でアプリケーションの実行ファイルが揃いました。
あとは、APP_01のディレクトリにブラウザからアクセスするだけです。
参考として、今回作成したwebアプリへのリンクを貼っておきます。