【改名】ストックドッグ

金融系の会社で働くSEが株やPython、その他諸々について書いています。システムトレードもやってるよ!

WebアプリケーションをBottleで作ってHerokuに公開してみた ~Python~

Herokuに公開する

doz13189.hatenablog.com

今回は具体的に、HerokuにWebアプリケーションを公開してみたいと思います。

準備するもの
  1. Git(バージョン管理ツール)
  2. herokuのツールベルト
  3. heroku
  4. 公開するアプリケーション(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してやる必要があります。

  1. Procfile
  2. requirements.txt
  3. 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