Webアプリ開発、PythonアプリをHerokuにデプロイ

1_プログラミング

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アプリを作成するためならとても良い選択肢のような気がしていますので、使ってみようと思います。

タイトルとURLをコピーしました