あさた研メモ

主に私が気づいたこととか困った時のメモとか書き留めとく用。

flaskで作ったサイトをherokuにデプロイした

環境構築

今回はpython3.4を使用しました
使用OSはAntergos(Arch Linuxとほぼ同じ)

pythonz+direnv

あらかじめこの辺入れときます

build-essential
zlib1g-dev
libbz2-dev
libssl-dev
libreadline-dev
libncurses5-dev
libsqlite3-dev
libgdbm-dev
libdb-dev
libexpat-dev
libpcap-dev
liblzma-dev
libpcre3-dev
curl
python-pip

pythonzをインストールします

次のコマンドをシェルで打っときます

$ curl -kL https://raw.github.com/saghul/pythonz/master/pythonz-install | bash
$ echo [[ -s $HOME/.pythonz/etc/bashrc ]] && source $HOME/.pythonz/etc/bashrc' >> $HOME/.bashrc
$ exec $SHELL

zsh使ってる人は出力先を.zshrcにしましょう(その前のbashrcは直さない)

virtualenvをインストールします

direnvに必要です

$ sudo pip install virtualenv

direnvをインストールします

$ curl -L -o direnv https://github.com/zimbatm/direnv/releases/download/v2.5.0/direnv.linux-amd64
$ sudo install direnv /usr/local/bin
$ echo 'type direnv > /dev/null 2>&1 && eval ") "$(direnv hook bash)" ' >> $HOME/.bashrc
$ exec $SHELL

zsh使ってる人はbashって書いてあるところをzshに直しましょう

pythonzでpythonインストール

$ pythonz install 3.4.3

これでpythonのインストールもオッケーです

プロジェクト作成

プロジェクトを作りたいディレクトリに移動して、mkdirでフォルダを作ります
ここでは仮に「flasktest」というフォルダを作ったことにします

direnvに必要な.envrcを作ります

$ echo 'layout python $(pythonz locate 3.4.3)' > flasktest/.envrc
$ direnv allow flasktest

この後、$ cd flasktest でディレクトリに入ると、開発環境の初期化が行われます
終わったら、一応pythonインタプリタを実行して、バージョンを確認してみてください

そうしたら、ディレクトリ移動をしないで、ライブラリをインストールします

$ pwd
/home/flasktest
$ pip install Flask

開発

あとは頑張って開発です
pycharm使うと便利です
pycharmとかを使う場合は使うインタプリタを開発環境のものにしてください
場所は

$ pythonz locate 3.4.3

でわかります

私の作った奴はこちらです
asatale/flasktest

Herokuにデプロイ

まずはherokuの登録

公式サイトからユーザ作っときます
次にheroku-toolbeltというのを入れます
apt-getとかyaourtで簡単に入ります

必要なものを入れます

$ pip install gunicorn

Procfileやその他諸々必要な書類作成

$ echo 'web: gunicorn flasktest:app --log-file=-' > Procfile
$ pip freeze > requirements.txt
$ echo 'python-3.4.3' > runtime.txt

.gitgnore作ります

direnv
*.pyc

gitで管理します

$ git init
$ git add .gitignore
$ git add .
$ git commit -m 'first commit'

Herokuにデプロイします

$ heroku login
$ heroku create
$ git push heroku master

確認します

$ heroku ps:scale web=1
$ heroku ps

これでcrushとか書いてなければオッケー

$ heroku open

これでページを確認できます

なにか問題がありそうなら、

$ heroku local

とやるとローカル環境でページを確認できます

感想

思ってたより簡単だった。
flaskは軽量なのでサッとテストできていい感じ。
herokuの設定に手こずったけどなんとか動いてるっぽい。
asataken

参考文献