PythonAnywhere に Flask アプリをデプロイ
PythonAnywhere に Flask アプリをデプロイ
Head First Python, 2nd Edition - O'Reilly Media を読んでいて、
- Python なら Web アプリも余裕だぜ
- Flask 使うぜ
- デプロイも PythonAnywhere で10分でできるぜ
なハイテンションで進んでいくのにならってやってみた。
Git でバージョン管理している Flask アプリを PythonAnywhere にデプロイしてみたので方法をまとめておく。
Git 管理に含めておくファイル
PythonAnywhere にデプロイするかどうかによらず、requirements.txt は Git 上で管理しておくべき。
pip freeze — pip 9.0.1 documentation
- 仮想環境でパケージ管理しておく
$ pip freeze > requirements.txt
でインストール済みパッケージを requirements format で書き出しておく
新たに clone した環境で依存パッケージのインストールが可能になるのはもちろん、デプロイ環境でも使用できる。
あとは こんな感じで 自作の site-package を作って使っているので、この distribution file も合わせて管理しておく。
PythonAnywhere とは
PythonAnywhere is a Python development and hosting environment that displays in your web browser and runs on our servers. They're already set up with everything you need. It's easy to use, fast, and powerful. There's even a useful free plan.
ということで、ホスティングもできれば、コーディングもできる便利サービス。
free plan もあるのでサクッと使ってみましょう。
PythonAnywhere 上での操作
やりたいことは以下のとおり。
- Git から PythonAnywhere 上にソースコードを持ってくる
- 環境セットアップ
- 起動
まずは Consoles にアクセス。
Setting up Flask applications on PythonAnywhere | PythonAnywhere help に沿って進めていく。
Uploading your code to PythonAnywhere
ソースコードの配置はこちらを参照。
Deploying an existing Django project on PythonAnywhere | PythonAnywhere help
Uploading your code to PythonAnywhere
Assuming your code is already on a code sharing site like GitHub or Bitbucket, you can just clone it from a Bash Console:
ということなのでコンソールからcloneする。
$ git clone https://github.com/kfurue/hfpython-flask.git
Create a virtualenv and install requirements
PythonAnywhere上で仮想環境を作成し、必要な依存パッケージをインストールする。
requirements.txt を同梱してあるので一括インストールできるが、自作のsite-packageも使っているのでこれもインストールする。
$ mkvirtualenv --python=/usr/bin/python3.6 my-virtualenv (mysite-virtualenv)$ pip install ./vsearch-1.0.tar.gz (mysite-virtualenv)$ pip install -r requirements.txt
次回からこの仮想環境をアクティベートするには以下のようにする。
$ workon my-virtualenv
Setting up the Web app
PythonAnywhere の Web タブを開いて設定していく。
- Add a new web app をクリック
- Manual Configuration をクリック
- Python version は任意のものをクリック(今回は3.6)
- Virtualenv セクションの設定をする
- 先ほど
mkvirtualenv
で指定した仮想環境をここで指定
- 先ほど
これで依存パッケージをインストールした仮想環境が動作環境として指定できる。
Configuring the WSGI file
同じく PythonAnywhere の Web タブでの設定。
Code セクションの WSGI configuration file: をクリックして最終行のアプリケーション名を自分のアプリに合わせて修正する。
今回は hfpython-flask/webapp/vsearch4web.py
なので vsearch4web
。
# import flask app but need to call it "application" for WSGI to work from vsearch4web import app as application
PythonAnywhere は application
としてインポートしてあげないと認識できないので as 以降もそのまま残しておく。
app.run()
は PythonAnywhere 側が呼ぶので自身のコードで呼ばないよう気をつける。
こんな感じ でローカル実行時のみ app.run()
できるようにしておく。(他者からインポートされた場合にはif文内は実行されない。)
Reload
PythonAnywhere の Web タブトップにある Reload
ボタンをクリックすれば完了。
http://kfurue.pythonanywhere.com/
Yay!