💬
DjangoをHerokuでデプロイするための初期設定
Djangoで開発するための準備
まずはプロジェクトのディレクトリを作成する。
mkdir mysite
作成したディレクトリに移動して
cd mysite
mysiteディレクトリ内に.gitignoreを作成する。
.gitignore
myvenv
.vscode
__pycache__
*.pyc
.DS_Store
.env
media_local
db.sqlite3
仮想環境の作成
python3 -m venv myvenv
仮想環境を有効化する。
source myvenv/bin/activate
Windowsの場合
.\myvenv\Scripts\activate
requirements.txt 作成する。
requirements.txt
django==4.2.11
dj-database-url==2.1.0
dj-static==0.0.6
python-decouple==3.8
django-environ==0.11.2
gunicorn==21.2.0
psycopg2-binary==2.9.9
whitenoise==6.6.0
django-heroku==0.3.1
requirements.txtに記載したパッケージをインストールする。
(myvenv) mysite $ pip3 install -r requirements.txt
Djangoのプロジェクト作成
プロジェクトを作成する。
最後の「.」はディレクトリ直下にプロジェクトを作成するという意味です。
(myvenv) mysite $ django-admin startproject myproject .
環境設定の変更
settings.pyの変更と.envファイルを作成していきます。
settings.py
from pathlib import Path
+ import os
+ import environ
+ from decouple import config
+ import dj_database_url
BASE_DIR = Path(__file__).resolve().parent.parent
+ env = environ.Env()
+ env.read_env(os.path.join(BASE_DIR, '.env'))
- SECRET_KEY = 'django-insecure-×××××××××××××××××××××××××××××××××××'
+ SECRET_KEY = env('SECRET_KEY')
- DEBUG = True
+ DEBUG = env('DEBUG', default=False)
- ALLOWED_HOSTS = []
+ if DEBUG:
+ ALLOWED_HOSTS = ['*']
+ else:
+ ALLOWED_HOSTS = ['127.0.0.1', '.herokuapp.com']
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
+ # Herokuデプロイのために追加
+ 'whitenoise.middleware.WhiteNoiseMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
- DATABASES = {
- 'default': {
- 'ENGINE': 'django.db.backends.sqlite3',
- 'NAME': BASE_DIR / 'db.sqlite3',
- }
- }
+ if DEBUG:
+ DATABASE_URL = 'sqlite:///' + str(BASE_DIR / 'db.sqlite3')
+ DATABASES = {'default': dj_database_url.config(default=DATABASE_URL)}
+ else:
+ DATABASES = {'default': dj_database_url.config(conn_max_age=600, ssl_require=True)}
- LANGUAGE_CODE = 'en-us'
+ LANGUAGE_CODE = 'ja'
- TIME_ZONE = 'UTC'
+ TIME_ZONE = 'Asia/Tokyo'
- STATIC_URL = 'static/'
+ # CSSファイルの設定
+ STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
+ STATIC_URL = 'static/'
+ STATICFILES_DIRS = (
+ os.path.join(BASE_DIR, 'static'),
+ )
+ STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
.env
SECRET_KEY=django-insecure-×××××××××××××××××××××××××××××××××××
DEBUG=True
参考記事
Discussion