Agile育成ブログ
未来を変える喜びを
未分類

DjangoをRenderにデプロイする


Warning: count(): Parameter must be an array or an object that implements Countable in /home/xs638785/agile-software.site/public_html/wp-content/plugins/rich-table-of-content/functions.php on line 490
django==4.1.2
dj-database-url
dj-static
python-decouple
django-environ
gunicorn
psycopg2-binary
whitenoise
  • dj-database-url

Django の開発時とインターネットに公開時では設定が違うのが普通です。 特にデータベースは、Web アプリや Web サービスの性能に影響する部分なので、公開時には MySQL や PostgreSQL など本格的な SQL データベースを使うのが普通です。 SQLite はデータベースと行っても一つのファイルにデータを保存する簡易的なデータベースなので、沢山の人が同時にアクセスするような使用は想定されていません。しかし、開発時は開発者以外のアクセスは基本的にないので、こうしたシンプルなデータベースで開発しても大きな問題ではありません。SQLite の場合、SQLiteBrowser など、データベースの中身をチェックできる便利なツールもあるので、開発時には便利です。

  • python-decouple

PythonではPython-decoupleというモジュールがあるため、各種設定ファイルでハードコーディングしたくない情報を.envに書き、sttings.pyでインポートすれば環境ごとに切り替え流事ができるので非常に有用です。

  • gunicorn

gunicornはWebサーバーとDjangoをつなぐWSGI(Web Server Gateway Interface)サーバーです。

  • whitenoise

Django では、本番環境での静的ファイルの処理がサポートされていません。ただし、優れた WhiteNoise プロジェクトを Django アプリケーションに統合することが可能

環境変数を使用可能にする

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

whitenoiseの設定

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

'whitenoise.middleware.WhiteNoiseMiddleware',

データベースの変更

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

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

default_dburl = "sqlite:///" + str(BASE_DIR / "db.sqlite3")

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

カスタムコマンド作成

build.sh

build.sh ファイルを作成します。

  • ライブラリをインストール
  • collectstatic で静的ファイルをまとめる
  • migrate でデータベース構築
  • superuser でスーパーユーザー作成

render.yaml

You cannot copy content of this page