Edited at

Flask を触ってみる + Heroku で動かす

More than 3 years have passed since last update.


Python を用意する

version は 2 系の最新版を用いる.

Python のバージョン管理には pyenv, ディレクトリごとの環境分離を virtualenv を使う.

Mac を使っているので brew より,

brew install pyenv

brew install pyenv-virtualenv

でインストール.

$ pyenv install -l | grep 2.7

2.7
2.7-dev
2.7.1
2.7.2
2.7.3
2.7.4
2.7.5
2.7.6
2.7.7
ironpython-2.7.4
jython-2.7-beta1
jython-2.7-beta2
stackless-2.7-dev
stackless-2.7.2
stackless-2.7.3
stackless-2.7.4
stackless-2.7.5
stackless-2.7.6

最新版は 2.7.7 のようだ. インストールする.

pyenv install 2.7.7

なお自分は古い pyenv を使ったため以下のエラーが起きた.

Mac の pyenv で 2 系を入れるときに checksum エラーが起きたときの対処法 - Qiita

バージョンを変えて確認

$ pyenv shell 2.7.7

$ python --version
Python 2.7.7

OK.


Flask を導入する

まず開発ディレクトリに移動.

cd path/to/proj

virtualenv venv27

activate (source or . を忘れずに)

source venv27/bin/activate

Flask, gunicorn の install

pip install Flask

かくにん

$ pip list

Flask (0.10.1)
itsdangerous (0.24)
Jinja2 (2.7.3)
MarkupSafe (0.23)
pip (1.5.6)
setuptools (3.6)
Werkzeug (0.9.6)
wsgiref (0.1.2)


開発する


Hello World!

hello.py を作る.


hello.py

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
return 'Hello World!'

if __name__ == '__main__':
app.run()


ローカルで走らせる.

$ python hello.py

* Running on http://127.0.0.1:5000/

http://127.0.0.1:5000/ にアクセスすると表示される:congratulations:

 2014-12-06 12.03.03.png


Heroku で動かす

gunicorn を入れる

pip install gunicorn

かくにん

$ pip list

Flask (0.10.1)
gunicorn (19.1.1)
itsdangerous (0.24)
Jinja2 (2.7.3)
MarkupSafe (0.23)
pip (1.5.6)
setuptools (3.6)
Werkzeug (0.9.6)
wsgiref (0.1.2)

Procfile を用意する

procfile · herokaijp/devcenter Wiki

web: gunicorn hello:app --log-file -

requirements.txt を書き出す

pip freeze > requirements.txt

.gitignore を作る

virtualenv のディレクトリ (venv27) を除いておく.

*.pyc

*.pyo
venv27

git に commit し, push する.

git add .

git commit -m 'Hello World!'
git push origin master

heroku に login し, push する.

heroku login

heroku create
git push heroku master

Web のインスタンス追加

heroku scale web=1

開く

heroku open

 2014-12-06 12.35.59.png

めで鯛


Reference