サイドバーの「Django ドキュメント検索」というプレースホルダの入った検索では、Django ドキュメント (Django 2.1) の公式サイト内を検索できます
Django アプリケーションを Heroku へデプロイする手順 (その 2)

目次

はじめに

これまでに Django で作成したアプリケーションを Azure > GCP (GAE Flexible) とデプロイ先を移行してきましたが、今度は Heroku へと移行することにしました。 前回、既存の Django アプリケーションを Heroku へデプロイする手順のうち、下記についてまとめました。

  • Heroku の設定
  • settings.py の修正

今回は、後半として、下記について記載します。

  • 設定ファイル(runtime.txt,requirements.txt,Procfile)の作成
  • Heroku にデプロイする
  • データベースのマイグレーション

設定ファイルの作成

runtime.txt の作成

Python のバージョンを記述した runtime.txt を ~/workspace/myapp に置きます。

python-3.6.6

 

おまけSpecifying a Python Runtime | Heroku Dev Center によれば、2018/08/15 現在では、python-3.7.0 と python-3.6.6 が利用できるようです。ご自身の環境に合わせて設定してください。

requirements.txt の作成

requirements.txt は、Python の実行に必要なパッケージを記述したファイルです。下記を実行すれば作成できます。

$ pip freeze > requirements.txt


なお、requirements.txt に記述されたパッケージに依存するパッケージは自動的にインストールされます。したがって、requirements.txt にすべてのパッケージを書く必要はなく、必須のものだけを記述しておけば良いでしょう。

下記は一例です。

Django==2.0.1
psycopg2-binary==2.7.5
django-debug-toolbar==1.9.1
wheel==0.30.0
python-dateutil==2.6.1
django-heroku==0.3.1
gunicorn==19.7.1

作成した requirements.txt を ~/workspace/myapp に置きます。

Procfile の作成

Procfile には、Heroku 上でのアプリケーション動作を定義します。下記のように記述します。

web: gunicorn appname.wsgi --log-file -

appname は Django のアプリケーション名です。Heroku の URL が呼ばれると appname/wsgi.py が gunicorn によって実行されます。Procfile も ~/workspace/myapp に置きます。

Heroku にデプロイする

Heroku へのデプロイは git で Heroku のリモートリポジトリ (heroku) の master ブランチへ push するだけです。下記の出力は一例です。

$ git push heroku master
Counting objects: 1555, done.
Delta compression using up to 12 threads.
Compressing objects: 100% (540/540), done.
Writing objects: 100% (1555/1555), 668.12 KiB | 83.51 MiB/s, done.
Total 1555 (delta 861), reused 1536 (delta 852)
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Python app detected
remote: -----> Installing python-3.6.6
・
・
remote: -----> $ python manage.py collectstatic --noinput
・
・
remote: -----> Launching...
remote:        Released v4
remote:        https://heroku-myapp.herokuapp.com/ deployed to Heroku
remote:
remote: Verifying deploy... done.
To https://git.heroku.com/heroku-myapp.git
* [new branch]      heroku -> master

上記出力にあるように、途中で manage.py collectstatic も自動的に実行されています。

データベースのマイグレーション

Heroku 上で必要なデータベーステーブルを作るために migrate, createsuperuser (管理用ユーザが必要な場合) を実行します。

$ cd ~/workspace/myapp
$ heroku run python manage.py migrate
$ heroku run python manage.py createsuperuser

おすすめすでに初期化したデータベースが手元にある場合は、上記を実行する代わりに Heroku とローカルの PostgreSQL 間のデータコピー の記事を参考にローカルから Heroku へデータをコピーすると楽です。

ここまででアプリケーションにアクセスできるようになったはずです。

関連記事

低価格なのに高速・多機能・高セキュリティ 月額400円(税別)から最大容量100GB WordPress専用高速サーバー Z.com WP
おすすめの記事