RenderでDjango+PostgreSQLをデプロイ&接続する完全ガイド(2025年版)
〜 Qiita 投稿用テンプレート 〜
この記事でわかること
- GitHub 上の既存 Django プロジェクトを Render にデプロイする手順
- Render で PostgreSQL データベースを作成し、アプリと安全に接続する方法
- DBeaver 等のクライアントから外部接続する際のポイント
- つまずきやすいポイントとトラブルシューティング
1. 前提条件
項目 | バージョン例 |
---|---|
Python | 3.11 以上 |
Django | 5.0 以上 |
GitHub リポジトリ |
main ブランチに push 済み |
ファイル |
requirements.txt , runtime.txt , .env.example など |
# requirements.txt 抜粋
Django>=5.0,<6.0
dj-database-url>=2.0
gunicorn
whitenoise
psycopg[binary] # PostgreSQL ドライバ
2. Render アカウント作成 & GitHub 連携
- https://dashboard.render.com にアクセスし GitHub / GitLab / Bitbucket でサインアップ
- 右上の New ➜ Web Service をクリック
- デプロイしたいリポジトリを選択
Render はリポジトリへ Push される度に自動デプロイが走ります。
3. PostgreSQL データベースを作成
- New ➜ PostgreSQL
- Service Name と Database Name を任意で入力
- プラン(Free / Standard など)とリージョン(例: oregon)を選択し Create Database
- 作成後「Connection details」に Internal URL と External URL が表示されます
- テスト用なのでマスクしていません。
用途 | 使い分け |
---|---|
Internal URL | Render 上の別サービス(Web, Worker など)から接続する際に使用(低レイテンシ・Private Subnet) |
External URL | ローカル端末や DBeaver など外部ツールから接続する際に使用 |
ポイント: アプリからは基本
Internal URL
を使いましょう。
4. Django プロジェクトを DB 対応にする
4‑1. settings.py
を環境変数ベースに変更
import dj_database_url, os
DATABASES = {
"default": dj_database_url.config(
# Renderから渡されるURL。
env="DATABASE_URL",
conn_max_age=600,
)
}
4‑2. 静的ファイル(collectstatic)対策
STATIC_URL = "static/"
STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles")
MIDDLEWARE.insert(1, "whitenoise.middleware.WhiteNoiseMiddleware")
4‑3. ローカル開発用 .env サンプル
Render の External URL を使ってローカル PC から DB に直接接続する場合の設定例です。
# .env (local development)
DATABASE_URL=postgresql://<user>:<password>@dpg-xxx.oregon-postgres.render.com:5432/<db>?sslmode=require
-
.env
を読み込むにはpython-dotenv
またはdjango-environ
を利用する方法が一般的です
5. Render Web Service を作成
フィールド | 設定例 |
---|---|
Name | my-django-app |
Environment | Python 3 |
Build Command | pip install -r requirements.txt |
Start Command | gunicorn myproject.wsgi:application |
Instance Type | Free または Starter |
Region | DB と同じリージョン |
5‑1. 環境変数を追加
5‑2. Render ダッシュボードで Environment Variables を追加する手順
以下は DATABASE_URL
(Internal URL)を例に、Render ダッシュボードから環境変数を登録する流れです。
手順 | 操作 | 備考 |
---|---|---|
1 | Render ダッシュボード ➜ 対象 Web Service をクリック | プロジェクトトップへ |
2 | 左メニュー Environment ➜ Environment Variables を選択 | |
3 | Add Environment Variable ボタンを押下 | |
4 |
Key に DATABASE_URL 、Value に Internal URL を貼り付け |
postgresql://user:pass@... |
5 | Save Changes をクリック | 直後に再デプロイが走る場合があります |
6 | 必要に応じて DJANGO_SECRET_KEY など他の変数も同様に追加 |
6. マイグレーション & 管理ユーザ作成(ローカル実行)
Render 上の DB に対して ローカル PC からマイグレーションをかける方法です。
あらかじめ 4‑3 の .env
を用意し、DATABASE_URL
に External URL を設定しておきます。
# 1) .env を読み込んだ状態でマイグレーション
$ python manage.py migrate --noinput
# 2) 管理ユーザを作成
$ python manage.py createsuperuser --username admin --email you@example.com
7. DBeaver から外部接続する方法
- DBeaver ➜ New Database Connection ➜ PostgreSQL
-
Host :
External URL
の@
以降〜ドメイン名部分(例:dpg-xxx.oregon-postgres.render.com
) - Database : Render で設定した DB 名
- Username / Password : Render で表示されている値
-
Port :
5432
(デフォルト)
Internal URL では接続できないので注意! 外部ツールは必ず External URL を使用します。
8. 動作確認
$ curl https://my-django-app.onrender.com/ # HTTP 200 が返れば OK
ブラウザで /admin/
にアクセスし、ログインできるか確認しましょう。
11. まとめ
- Render では Web Service と PostgreSQL をワンクリックで用意できる
- アプリからは Internal URL、外部ツールからは External URL を使い分ける
- デプロイ設定は「環境変数がすべて」と言っても過言ではない
参考リンク
- Render 公式ドキュメント
- Postgres Internal / External URL
- Django デプロイガイド
- Web Service 基本仕様