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

  • 38
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

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