前回の続きです。
無料で作るWebサービス Herokuを使ってWebサービスを作ってみた(前編) - 今日学んだこと
作ったアプリをherokuに上げます
なお、参考にしたのはこちら
Getting Started with Django on Heroku | Heroku Dev Center
heroku toolbeltのインストール
僕が試している環境はubuntuなのでubuntuでのやりかたですが、macでも変わらないと思います。
$ wget -qO- https://toolbelt.heroku.com/install-ubuntu.sh | sh
で、heroku使うためのツールがインストールされます。gemから入れるのが一般的っぽいんだけど、うまく動かなかったのでこちらで。マジruby嫌い・・・
環境の吐き出し
Djangoのmanage.pyがあるディレクトリに移動し、
$ pip freeze > requirements.txt
で、必要なAPIが吐き出され、herokuが知ることができます。
Gitのcommit
サーバーに対してではなく、ローカルに対してcommitします。
$ git init $ git add . 〜ここで、.gitignoreに*.pycを登録〜 $ git commit -m "first commit"
でOK
Herokuに登録
Herokuのアカウントはすでに作成している前提です。heroku createコマンドを実行すると、ユーザー名としてのメールアドレス、パスワードを聞かれます。正しく入力すると、gitの内容がherokuに登録されます。
$ heroku create Enter your Heroku credentials. Email: xxxxx@mailaddress.com Password (typing will be hidden): Creating fast-savannah-1531... done, stack is cedar http://fast-savannah-1531.herokuapp.com/ | git@heroku.com:fast-savannah-1531.git Git remote heroku added
Herokuにcommit
commitする前に、herokuにssh鍵を登録する必要がありました。僕はこちらを参考にしてうまくいきました。
Heroku で git push で Permission denied (publickey). のエラーが発生した。 - u16suzuの blog
無事ssh鍵を登録したら
$ git push heroku master
で、ソース達がherokuに飛んでいきます。
こんな感じになりました!
http://studysuggest.herokuapp.com
トラブルシューティング
僕がはまった罠達です
Pythonのバージョン指定
runtime.txtというファイルを用意してあげて、
python-3.3.2
と中に記載してあげる必要がありました。
STATIC_ROOTの指定
Django and Static Assets | Heroku Dev Center
に従って、settings.pyとwsgi.pyを修正する必要がありました。
また、追加しただけだと
FileNotFoundError: [Errno 2] No such file or directory: '/app/suggestStudy/static'
と怒られたので、
echo dummy > suggestStudy/static/dummy
としてディレクトリ&ファイルを作成しました。
Procfileの作成
herokuがどうやってプリケーションを起動するか、Procfileとして作成してあげる必要がありました。内容はこんな感じで
web: python manage.py runserver 0.0.0.0:$PORT --noreload
まとめ
何かを学ぶにあたり、一番大事なのは実際に手を動かすこと、システムで言えば作って、公開することだと思ってます。
不恰好でも動くものを作り、公開し、フィードバックをもらい、もしくはフィードバックが無いことに対する対策を考え、より目標に対する完成度を上げていく。
そんな時、無料で気軽に使えるherokuというのは強い味方になるんじゃないかなと思いました。