Djangoアプリをrenderでdeploy
以下は、Django 4.2とPostgreSQLを利用したアプリケーションを、render.comのHobbyプランでデプロイする際の具体的な手順と注意点をまとめた例となります。
概要
本ナレッジでは、render.com(Hobbyプラン)を用いてDjango 4.2アプリをデプロイする方法について解説します。Hobbyプランでは、Build Command と Start Command をそれぞれ1行のみ登録可能で、Pre-Deploy Command は利用できないため、各コマンドに必要な処理を集約する工夫が求められます。ここでは、GitHub連携、環境変数の設定、Django側の設定変更など、ポイントを詳述します。
事前準備
Djangoプロジェクトの構築:
Django 4.2を用いたアプリケーションがローカルで動作していることを確認してください。PostgreSQLの設定:
render.comのRender Postgresを利用する場合、接続情報(HOST, PORT, USER, PASSWORD, NAME)を環境変数として管理できるようにsettings.py
内のDATABASES
設定を変更します。GitHub連携:
プロジェクトはGitHubリポジトリにプッシュしておき、render.comのサービス作成時にリポジトリを選択できる状態にします。
render.comでの設定
サービスの作成とGitHub連携
render.comのDashboardから「New」→「Web Service」を選び、対象のGitHubリポジトリを連携します。これにより、コミット時の自動デプロイなどの運用が可能になります。Build Command の設定
HobbyプランではBuild Commandは1行のみ登録可能なため、以下のように必要な処理を連結します。
例:pip install -r requirements.txt && python manage.py collectstatic --noinput
※ collectstatic コマンドはPre-Deploy Commandが使えないため、Build Command内で実行する必要があります。
Start Command の設定
同様に、Start Commandも1行のみ登録可能です。Gunicornを用いたアプリ起動が一般的なため、以下のように設定します。
例:gunicorn myproject.wsgi:application --bind 0.0.0.0:$PORT
※
myproject
はプロジェクトルートのパッケージ名に合わせて適宜変更してください。
Django側の設定調整
ALLOWED_HOSTS の設定:
render.comでは自動でホスト名が割り当てられるため、settings.py
内のALLOWED_HOSTS
にドメイン(例:['yourproject.onrender.com']
)を追加してください。DEBUG モードの無効化:
本番環境ではDEBUG=False
とし、秘密鍵(SECRET_KEY
)やその他の機密情報は環境変数から読み込むようにします。静的ファイルの管理:
静的ファイルはWhiteNoise等を利用して配信するなどを検討してください。Build Command内でcollectstatic
を実行するため、静的ファイルが正しく配置されることを確認します。PostgreSQL接続設定:
以下のように環境変数から接続情報を取得することで、render.com上のPostgreSQLと連携します。import os DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': os.environ.get('DATABASE_NAME'), 'USER': os.environ.get('DATABASE_USER'), 'PASSWORD': os.environ.get('DATABASE_PASSWORD'), 'HOST': os.environ.get('DATABASE_HOST'), 'PORT': os.environ.get('DATABASE_PORT', '5432'), } }
環境変数の設定:
render.comのDashboard上で、SECRET_KEY
やDATABASE_*
など必要な環境変数を登録してください。これにより、コード内に機密情報をハードコーディングせずに済み、セキュリティが向上します。
まとめ
render.comのHobbyプランを活用したDjango 4.2アプリのデプロイでは、Build CommandとStart Commandの1行制限に対応するため、コマンドの連結や必要な処理の統合が鍵となります。GitHub連携による自動デプロイ、環境変数による設定管理、Django側のALLOWED_HOSTSや静的ファイルの適切な設定など、各ポイントを押さえることで、スムーズかつセキュアなデプロイが実現できます。
この手法を活用し、効率的な運用を進めてください。