WebアプリケーションをBottleで作ってHerokuに公開してみた ~Python~
Herokuに公開する
今回は具体的に、HerokuにWebアプリケーションを公開してみたいと思います。
準備するもの
- Git(バージョン管理ツール)
- herokuのツールベルト
- heroku
- 公開するアプリケーション(Pythonで作ったもの)
上の4つは事前に準備したものとして、進めます。(これらが揃ってない方はいくらでも記事があるので、ググりましょう!)
いざ公開へ
では、herokuにログインします。
メールアドレスとパスワードの入力を求められます。
heroku login
herokuでは、gitのリポジトリにあるファイルをプッシュする形で公開します。
そのため、herokuに登録したいファイルのあるフォルダをgitで管理する必要があります。
公開したいアプリがあるフォルダでgitを実行しましょう。
git init
先程も言ったとおり、gitでcommitしたものがherokuにプッシュされます。
フォルダにあるすべてのファイルをaddしてcommitしましょう!!
git add . git commit -m "initial commit"
これでgitへのcommitが完了しました。
次は、Herokuで公開する場所を作ります。
heroku create
URLが発行されたと思います。
それがアプリを公開する場所です。
そして、そこに先ほどgitでcommitしたものをプッシュします。
git push heroku master
これをやっても、エラーがでるはずです。
なぜなら、herokuにはプッシュされたファイルが何の言語でできているのか、そして、何のモジュールが必要なのかわからないからです。
アプリケーションのファイルとは別に、herokuの環境を整えるためのファイルが必要です。
なので、今から必要なファイルを3つ、新たに作ってgitでcommitしてやる必要があります。
- Procfile
- requirements.txt
- runtime.txt
この3つです。
Procfileは、Webアプリケーションであることを示すファイルです。
web: python tiger.py
requirements.txtは、Webアプリケーションを動かすために何のモジュールをインポートしなければならないかを書いたファイルです。
Herokuはこのファイルを見て、Heroku上にモジュールをインポートしてくれます。
pip freeze
これでインポートする必要があるモジュールが一覧で表示されます。
それをrequirements.txtに書き込みましょう。
私の場合はこうなりました。
beautifulsoup4==4.5.1 bottle==0.12.9 bottle-sqlalchemy==0.4.3 Django==1.9.5 html5lib==0.999 lxml==3.6.4 numpy==1.11.1 pandas==0.18.1 python-dateutil==2.5.3 pytz==2016.6.1 six==1.10.0 SQLAlchemy==1.0.13 WTForms==2.1
最後にruntime.txt。
Python2.7を使っている人は必要ないと思います。
Herokuは、requirements.txtを読んで自動でPythonであることを認識してくれます。
しかし、デフォルトでPythonの場合は2.7になってしまうので、3系を使っている人は3系を入れるように支持する必要があります。
それがruntime.txtです。
python-3.5.2
これら3つのファイルをWebアプリケーションがあるフォルダに突っ込みましょう。
そして、忘れてはいけないのはこれらをgitでcommitする必要があります。
git add . git commit -m "added 3 files"
この後に、先ほどエラーが出てしまった、コマンドをもう一度打ちます。
git push heroku master
Verifying deploy... done.とメッセージが出れば成功です。
エラーが出た方は、私が参考にしたサイトなどを巡りながら頑張ってください!!
成功した方は、deployed to Herokuの左隣のURLがたった今公開したWebアプリケーションになります。
今回は、練習だったので趣味をベースにWebアプリを作りました。
次に作るときは、株関連のアプリを作ろうと思います。
【参考サイト】
http://dotinstall.com/lessons/basic_heroku/28801
Getting Started on Heroku with Python | Heroku Dev Center
heroku で python 動かすチュートリアルをやったメモ - Qiita
簡単!Herokuで動くTwitter botをPythonで実装する - Qiita
Heroku×bottleを使って4分33秒でWebアプリを公開する - Qiita