はじめに
学習のため、DjangoGirlsなどのチュートリアルで作成したDjangoアプリをDocker化した。そしてアプリをHerokuへデプロイしたい。チュートリアルでもHerokuのデプロイ方法は載っているので基本的にそれを参考にすればデプロイできる。分からなくなったら1,2度はローカルで環境構築、開発、デプロイをしてみると良いかもしれない
前提
heroku上にデプロイ予定のアプリを作成済み。
以下の管理インターフェースとは、mysiteなど自身で命名した名前。
手順
- Pythonライブラリのリストにherokuへ必要なパッケージを追加編集し、保存
Django==2.2.16
psycopg2
# この下が新たに追加するライブラリ
dj-database-url
gunicorn
whitenoise==3.0.0
2.ルートディレクトリにProcfileを作成し、編集、保存
web: gunicorn 管理インターフェース名.wsgi --log-file -
3.どのバージョンのPythonを使いたいのかをHerokuに知らせるため。
python-3.6.4
4.開発環境ファイルを作成し、編集保存する
今回は開発環境でもpostgresqlなので、DATABASEの欄は自身のsettings.pyのデータベース設定をコピーする。
以下はサンプル。
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'postgres',
'USER': 'postgres',
'PASSWORD': 'postgres',
'HOST': 'db',
'PORT': 5432,
}
}
DEBUG = True
5.本番環境のため設定ファイルを編集する
こちらもデータベースの設定は各自の環境を設定
import dj_database_url
...
DEBUG = False
ALLOWED_HOSTS = ['127.0.0.1', '.herokuapp.com']
...
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'postgres',
'USER': 'postgres',
'PASSWORD': 'postgres',
'HOST': 'db',
'PORT': '5432',
}
}
...
db_from_env = dj_database_url.config(conn_max_age=500)
DATABASES['default'].update(db_from_env)
6.wsgi.pyを編集する
...
# Heroku
from whitenoise.django import DjangoWhiteNoise
application = DjangoWhiteNoise(application)
7.herokuへデプロイする
herokuへのデプロイは大きくわけてコマンドラインから直接pushするか、Githubのコードを自動デプロイでき、どちらかの方法でherokuへコードをupします。
8.本番環境(heroku)のデータベースを設定する
herokuのサーバ上でマイグレーションを実行し、管理者ユーザーを作成します
こちらもコマンドラインとherokuのサイトから操作することも可能です
9.デプロイ成功
URLからきちんとデプロイできているか確認する
参考文献
https://tutorial-extensions.djangogirls.org/ja/heroku/
https://devcenter.heroku.com/articles/getting-started-with-python