gitを勉強したらスムーズにHerokuへのデプロイが理解できました。
Webアプリ開発の勉強用にHerokuの無料枠はとてもありがたいですね。
チュートリアルを参考にherokuへPythonアプリをデプロイしていきます。
事前の知識として、gitの基本的な知識があると理解ができます。gitの基本的な内容をまとめたこちらの記事もご参照ください。
こんな人の役に立つかも
・Webアプリケーションを公開したい人
・HerokuへPythonアプリケーションをデプロイしたい人
Heroku利用の事前準備
Herokuとgitのインストール
⑴Heroku CLI
コマンドでHerokuのアカウントを操作するためのソフトウェアです。Herokuコマンドが利用できるようになります。
以下のset upのところから、任意のOSのインストーラをダウンロードしてインストールするのが簡単です。
⑵git
gitもあらかじめインストールしておきます。
Herokuへログイン
ターミナルまたはコマンドラインにて「heroku login」コマンドを実行して、「Press any key・・・」で適当なキーをおすと、ブラウザが開き、「Log In」ボタンが出てくるので、それを押します。ブラウザのタブはもう閉じても大丈夫です。
> heroku login
heroku: Press any key to open up the browser to login or q to exit:
コマンドプロンプトの表示は次の図のようになりました。herokuのアカウントでログインできています。
デプロイするアプリの準備
githubの共有リポジトリからherokuが準備してくれているpythonのWebアプリケーションをローカルにcloneしてきます。
作業フォルダへ移動しておきます。私はルートまたはユーザーの直下にPythonというフォルダを作成してここに作業フォルダを入れるようにしていますので、まずはPythonフォルダへcdしました。
cd Python
githubの共有リポジトリからデプロイをするためのアプリケーションをcloneしてきます。
git clone https://github.com/heroku/python-getting-started.git
cloneすると、「python-getting-started」というフォルダができますので、その中に移動します。
cd python-getting-started
python-getting-startedフォルダの「runtime.txt」には、Herokuで動作させるPythonのバージョンが記載されています。また、「requirementes.txt」には、依存関係のあるパッケージが記載されています。
アプリのデプロイ
まずは、herokuにアプリをデプロイするための準備を行ってもらいます。「heroku create」コマンドを実行します。「heroku create アプリ名」のアプリ名を自分でつけることができますので、「panda-app-078」というアプリ名にしました。ここは重複しないように管理されているようなので、任意のアプリ名にする必要があります。
>heroku create panda-app-078
herokuからアプリのURLなどが返ってきます。
heroku createをすると、herokuの共有リポジトリと現在のプロジェクトのローカルリポジトリが紐づきますので、この後に行うgit pushをすることでherokuの共有リポジトリにpushすることができるようになります。
>git push heroku master
バーっとたくさんのメッセージがかえってきます。
・・・略・・・
remote: Building wheels for collected packages: psycopg2
remote: Building wheel for psycopg2 (setup.py): started
remote: Building wheel for psycopg2 (setup.py): finished with status 'done'
remote: Created wheel for psycopg2: filename=psycopg2-2.8.5-cp37-cp37m-linux_x86_64.whl size=454908 sha256=a8777eeb3be7179209290db27d3a6be1e488083cb117afdfa5680bd83d80e51e
remote: Stored in directory: /tmp/pip-ephem-wheel-cache-9xqbblnu/wheels/69/74/ec/7764aea035627654bf137f89a91405ac239c569ce10ae87137
remote: Successfully built psycopg2
remote: Installing collected packages: sqlparse, pytz, asgiref, django, gunicorn, whitenoise, psycopg2, dj-database-url, django-heroku
remote: Successfully installed asgiref-3.2.10 dj-database-url-0.5.0 django-3.1 django-heroku-0.3.1 gunicorn-20.0.4 psycopg2-2.8.5 pytz-2020.1 sqlparse-0.3.1 whitenoise-5.2.0
remote: -----> $ python manage.py collectstatic --noinput
remote: 133 static files copied to '/tmp/build_d7295b21/staticfiles', 419 post-processed.
remote:
remote: -----> Discovering process types
remote: Procfile declares types -> web
remote:
remote: -----> Compressing...
remote: Done: 56.6M
remote: -----> Launching...
remote: Released v5
remote: https://panda-app-078.herokuapp.com/ deployed to Heroku
remote:
remote: Verifying deploy... done.
To https://git.heroku.com/panda-app-078.git
* [new branch] master -> master
この時点で、herokuのサイトにアクセスしてみると、次のようにアプリが登録されていることもわかります。
Webアプリを実行
まずは1個のWebアプリのインスタンスを作成するコマンドです。
> heroku ps:scale web=1
次に、コマンドでWebアプリを開くことができます。
> heroku open
無事、デプロイすることができました。次のようなpythonアプリ(djangoのアプリらしいです)が表示されれば成功です。
アプリケーションの削除
herokuにcreateしたアプリは次のコマンドで削除することができます。
> heroku app:destroy --app panda-app-078 --confirm panda-app-078
コマンドとしては、「heroku app:destroy –app アプリの名前 –confirm アプリの名前」と任意の名前のアプリとします。
» Warning: app:destroy is not a heroku command.
Did you mean apps:destroy? [y/n]: y
Destroying ⬢ panda-app-078 (including all add-ons)... done
Did you mean appsと聞かれたら、「Y」と入力するとアプリが削除されます。
herokuの無料枠について
herokuでは「dynos」と名付けられたリナックスのコンテナが動作します。dynosを利用する時間で無料枠の制限があります。アプリが2個同時に動作していると2倍の速さで時間が消費されますので注意です。
herokuの無料プランは、30分間、アプリが動作していないとスリープするようです。
また、dynosは、1か月に550時間までの利用とのことです。(クレジットカード登録で1000時間に伸びるそうです。)
初めてデプロイするときの試しや、小さなWebアプリを作成するためならとても良い選択肢のような気がしていますので、使ってみようと思います。