このチャプターの目次

Render にデプロイするための設定をしていきます。

基本的にはこちらの公式ドキュメントを参考に進めていきます。

https://render.com/docs/deploy-django

whitenoiseを使用するために、MIDDLEWAREに追加とSTATICFILES_STORAGEを設定します。

Render で PostgreSQL を使用できるように、DATABASESを変更します。

環境変数にDATABASE_URLが設定されていない場合は、db.sqlite3 データベースを使用するようにしています。

Render にデプロイすると自動的に環境変数にDATABASE_URLが設定されます。

Render への ssh 接続は有料でないとアクセスできないので、スーパーユーザーをカスタムコマンドで作成します。

そのために、環境変数にSUPERUSER_NAMESUPERUSER_EMAILSUPERUSER_PASSWORDを設定します。

settings.py

from pathlib import Path
# ↓ 追加
import os
import environ
from decouple import config
from dj_database_url import parse as dburl

BASE_DIR = Path(__file__).resolve().parent.parent

env = environ.Env()
env.read_env(os.path.join(BASE_DIR, ".env"))

MIDDLEWARE = [
    "django.middleware.security.SecurityMiddleware",
    '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",
]

# ↓ 追加
default_dburl = "sqlite:///" + str(BASE_DIR / "db.sqlite3")

DATABASES = {
    "default": config("DATABASE_URL", default=default_dburl, cast=dburl),
}

STATIC_URL = "static/"
STATIC_ROOT = str(BASE_DIR / "staticfiles")
STATICFILES_STORAGE = "whitenoise.storage.CompressedManifestStaticFilesStorage"

DEFAULT_AUTO_FIELD = "django.db.models.BigAutoField"

SUPERUSER_NAME = env("SUPERUSER_NAME")
SUPERUSER_EMAIL = env("SUPERUSER_EMAIL")
SUPERUSER_PASSWORD = env("SUPERUSER_PASSWORD")

環境変数

スーパーユーザー作成用の環境変数を作成します。

.env

SUPERUSER_NAME=admin
SUPERUSER_EMAIL=admin@admin.com
SUPERUSER_PASSWORD=password