0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

RenderでDjango+PostgreSQLをデプロイ&接続する方法

Last updated at Posted at 2025-04-20

RenderでDjango+PostgreSQLをデプロイ&接続する完全ガイド(2025年版)

〜 Qiita 投稿用テンプレート 〜

この記事でわかること

  • GitHub 上の既存 Django プロジェクトを Render にデプロイする手順
  • Render で PostgreSQL データベースを作成し、アプリと安全に接続する方法
  • DBeaver 等のクライアントから外部接続する際のポイント
  • つまずきやすいポイントとトラブルシューティング

イメージとしてはこんな感じの環境設定ができるようにします。
image.png


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 連携

  1. https://dashboard.render.com にアクセスし GitHub / GitLab / Bitbucket でサインアップ
  2. 右上の New ➜ Web Service をクリック
  3. デプロイしたいリポジトリを選択

Render はリポジトリへ Push される度に自動デプロイが走ります。


3. PostgreSQL データベースを作成

  1. New ➜ PostgreSQL
  2. Service NameDatabase Name を任意で入力
  3. プラン(Free / Standard など)とリージョン(例: oregon)を選択し Create Database
  4. 作成後「Connection details」に Internal URLExternal URL が表示されます
  5. テスト用なのでマスクしていません。
    image.png
用途 使い分け
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 ダッシュボードから環境変数を登録する流れです。
image.png

手順 操作 備考
1 Render ダッシュボード ➜ 対象 Web Service をクリック プロジェクトトップへ
2 左メニュー Environment ➜ Environment Variables を選択
3 Add Environment Variable ボタンを押下
4 KeyDATABASE_URLValue に Internal URL を貼り付け postgresql://user:pass@...
5 Save Changes をクリック 直後に再デプロイが走る場合があります
6 必要に応じて DJANGO_SECRET_KEY など他の変数も同様に追加

6. マイグレーション & 管理ユーザ作成(ローカル実行

Render 上の DB に対して ローカル PC からマイグレーションをかける方法です。
あらかじめ 4‑3.env を用意し、DATABASE_URLExternal URL を設定しておきます。


# 1) .env を読み込んだ状態でマイグレーション
$ python manage.py migrate --noinput

# 2) 管理ユーザを作成
$ python manage.py createsuperuser --username admin --email you@example.com

7. DBeaver から外部接続する方法

  1. DBeaver ➜ New Database Connection ➜ PostgreSQL
  2. Host : External URL@ 以降〜ドメイン名部分(例: dpg-xxx.oregon-postgres.render.com
  3. Database : Render で設定した DB 名
  4. Username / Password : Render で表示されている値
  5. Port : 5432(デフォルト)

Internal URL では接続できないので注意! 外部ツールは必ず External URL を使用します。


8. 動作確認

$ curl https://my-django-app.onrender.com/  # HTTP 200 が返れば OK

ブラウザで /admin/ にアクセスし、ログインできるか確認しましょう。


11. まとめ

  • Render では Web ServicePostgreSQL をワンクリックで用意できる
  • アプリからは Internal URL、外部ツールからは External URL を使い分ける
  • デプロイ設定は「環境変数がすべて」と言っても過言ではない

参考リンク

  • Render 公式ドキュメント
    • Postgres Internal / External URL
    • Django デプロイガイド
    • Web Service 基本仕様
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?