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