##概要
PythonのフレームワークであるDjangoでアプリを作ってherokuに更改するまでをまとめてみた。
今回は「heroku」へのデプロイ編
※前回のdjangoでアプリを作成するまでの手順は以下を参考
https://qiita.com/tky529/items/e340ab404a89c359ecd3
##前提
仮想環境で構築しておりますが、仮想環境以外でも同様の事が可能です。
Python 3.7.12
##手順
まずはherokuでアプリを動かすために必要なパッケージをインストールします
% pip install dj-database-url gunicorn whitenoise
次に必要な「django-heroku」もインストールしたいのだが、私の環境(pythonのバージョン等の関係?)だとpsycopg2のエラーが出てしまうため、以下のサイトを参考にインストールした
参考
https://e-tec-memo.herokuapp.com/article/197/
まずは依存関係のパッケージをインストールせずにdjango-herokuのみをインストール
% pip install --no-deps django-heroku
その後psycopg2をインストールするとエラーとなるためわかりに以下をインストール
% pip install psycopg2-binary
インストールが終わったらrequirements.txtファイルへ書き込みます。
requirements.txtはサーバーにアプリで使用するパッケージをHerokuに教えるためのファイルです。
% pip freeze > requirements.txt
####Procfileファイル
次にProcfileを作成します。
これは、Heroku起動時に実行するコマンドを伝えます。
ルートフォルダ直下にProcfileというファイルを作成し、以下の内容を記載します。
※gunicornはpython manage.py runserverの凄いバージョンらしい
web: gunicorn mysite.wsgi
####runtime.txtファイル
runtime.txtファイルはHerokuに使用するpythonのバージョンを知らせるためのファイルです。ルートフォルダ直下にruntime.txtを作成します。
python-3.6.4
####アプリケーションディレクトリ/local_settings.py
アプリケーションディレクトリ直下にlocal_settings.pyファイルを作成しましょう。
同じ階層のアプリケーションディレクトリ/settings.pyからDATABASE設定をコピーしていきます。
SECRET_KEYもこちらに設定します。
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
SECRET_KEY = 'django-*******'
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
DEBUG = True
####アプリケーションディレクトリ/settings.py
先程の設定を受けてsettings.pyも修正します。
SECRET_KEYは削除してください
import dj_database_url
...
DEBUG = False
ALLOWED_HOSTS = ['127.0.0.1', '.herokuapp.com']
...
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'name',
'USER': 'user',
'PASSWORD': '',
'HOST': 'host',
'PORT': '',
}
}
...
# 最後の行に追加
# ローカルではlocal_settingsを使用する設定
try:
from .local_settings import *
except ImportError:
pass
# SECRET_KEYを環境変数として使用する設定
if not DEBUG:
SECRET_KEY = os.environ['SECRET_KEY']
import django_heroku #追加
django_heroku.settings(locals())
db_from_env = dj_database_url.config(conn_max_age=500)
DATABASES['default'].update(db_from_env)
####Herokuへデプロイ
まずはherokuにログインする
% heroku login
herokuアプリを作成する
※testappは好きな名前(他人と重複しない名前)
※アプリ名は忘れないようにする
% heroku create testapp
Gitコマンドを打っていく
% git status
% git add -A .
% git commit -m "first commit"
% git push heroku master
次にherokuにコマンド
% heroku ps:scale web=1
% heroku run python manage.py migrate
% heroku run python manage.py createsuperuser
・・・ユーザー名、メールアドレス、パスワードは任意のもので設定する
% heroku open
これでheroku常にアプリが公開(デプロイ)された
お疲れ様でした!!