PaizaCloudまたはGitHub CodespacesからGitHubを経由してRenderへデプロイする方法です。
GitとGitHubに関してはRenderへデプロイするための「コードの転送手段」として利用しますので、それぞれの詳しい解説はありません。
でもGitを使ったことない方にはとっかかりとしてちょうどいい教材になると思います。
手順のみご紹介します。
完成品お名前.comVPSにデプロイ ← Renderとは関係ないが同じものをデプロイしてます。
完成品Renderデプロイ(表示するまで数分かかることがあります。毎月20日~月末は停止します。)
前回(ステップ1)では、PaizaCloudやGitHub Codespacesで開発環境を構築し、Djangoアプリの動作確認や静的ファイルの設定(WhiteNoise)まで行いました。
今回はその続きとして、作成したアプリをGitHub経由でRenderにデプロイ(公開)する手順を解説します。
前回の記事はこちらになります。

デプロイの全体の流れ
PaizaCloud / GitHub Codespaces
↓(git push)
GitHub(リポジトリ)
↓(自動デプロイ)
Render(公開)
RenderはGitHubのリポジトリと直接連携するため、Herokuのような専用CLIは不要です。git push でGitHubを更新するだけで、Renderが自動的に最新コードをデプロイしてくれます。
settings.py変更
ALLOWED_HOSTS = []に許可するサーバー設定
本番環境では ALLOWED_HOSTS に実際のドメインを指定します。
ただし、Renderのデプロイ先URLは事前に確定しているため、以下のように設定します。
# settings.py
# Renderのデプロイ後に発行されるURL(例)と開発環境のホストを許可
ALLOWED_HOSTS = ['自分のアプリ名(後述のデプロイのところでNAMEに書いた名前).onrender.com', 'localhost', '127.0.0.1']

補足
Renderのアプリ名は後で決めるため、最初は['*']のままデプロイして動作確認後に修正してもOKです。
開発環境(PaizaCloud・Codespaces)ではDEBUG = Trueのままで問題ありません。
DEBUG = False
本番環境では DEBUG = False にします。DEBUG = True のままにすると、エラー発生時に内部情報が表示されてしまいます。
DEBUG = False
DEBUG = True でエラー発生時の画面:


DEBUG = Falseにするとエラーコードだけになります。


補足
Renderでは環境変数でDEBUGを切り替えることができます。詳しくは後述の「Renderの環境変数設定」をご覧ください。
Renderへデプロイするために必要なファイルを追加
2つのファイルを用意します。追加したらGitHubにPUSHする必要があります。
目次へ
requirements.txt
プロジェクトルートにrequirements.txt を作成します。
中身は以下:
django
gunicorn
whitenoise
python-dotenv
build.sh
プロジェクトルートに build.sh を作成します。
Renderのビルド時に実行されるシェルスクリプトです。
#!/usr/bin/env bash
# build.sh
set -o errexit
pip install -r requirements.txt
python manage.py collectstatic --no-input
set -o errexit: エラーが発生したらスクリプトを停止する設定。collectstatic: 静的ファイルをstaticfilesに集めるコマンド(ステップ1で説明済み)。
注意
build.shはテキストエディタで作成し、改行コードがLF(Unix形式)になっていることを確認してください。
PaizaCloud・Codespacesのターミナルで作成すれば自動的にLFになります。
Renderの仕組み(概要)
Renderは、GitHubのリポジトリと連携して自動デプロイを行うPaaS(Platform as a Service)です。
- GitHubにコードをプッシュすると、Renderが
build.shを実行してビルドします。 - ビルド完了後、
gunicorn hajimete_pj.wsgiコマンドでWebサーバーが起動します。 - 無料プランでは一定時間アクセスがないとスリープし、次のアクセス時に起動します(数分かかる場合があります)。
GitHubへプッシュ
GitHub Codespacesの場合
GitHubレポジトリへPushに書いてあります。
PaizaCloudの場合
PaizaCloudからGitHubへPushする方法に書いてあります。
Renderへデプロイ
Renderアカウントの作成
Render にアクセスし、GitHubアカウントでサインアップします。
GitHubと連携
画面右上のプロフィールアイコンをクリックし、「Account Settings」を選択します。
「Git Deployment Credentials」 セクションを使用します。
- 「Add credential」をクリック
- 「GitHub」を選択
- GitHubの認証画面が開くので、そこでRenderへのアクセスを許可します。
- Repository accessでOnly select repositories→対象のレポジトリを選びsavedします。
これが完了すると、GitHub AppsとしてRenderが登録され、リポジトリの一覧が表示されるようになります。
Web Serviceの作成
- Renderのダッシュボードで「New +」→「Web Service」をクリック
- 先ほどのGitHubリポジトリ(
例hajimete_rep)を選択- 出ない場合、Searchの右のCredencialsをクリック→「Configure on GitHub」でRepository accessが出るので、先ほどのGitHubリポジトリ(
hajimete_rep)を選択。 - ここのやり方は、しょっちゅう変わるので都度、検索してください。
- 出ない場合、Searchの右のCredencialsをクリック→「Configure on GitHub」でRepository accessが出るので、先ほどのGitHubリポジトリ(
- 以下のように設定します:
| 項目 | 設定値 |
|---|---|
| Name | hajimete-app(任意、URLの一部になります。) |
| Region | Singapore(日本に近いため) |
| Branch | master または main(GitHubのブランチに合わせる) |
| Language | Python 3 |
| Build Command | ./build.sh |
| Start Command | gunicorn hajimete_pj.wsgi |
| Instance Type | Free(これを選ばないとデプロイするとAdd cardの画面が出てくる) |
- 環境変数の設定(下記)
- 「Deploy Web Service」をクリック
環境変数の設定
「Environment Variables」は以下の環境変数を追加します:
環境変数欄追加は「Add EnvironmentVariable」
| 変数名 | 設定値 |
|---|---|
PYTHON_VERSION | 3.12.0(使用しているPythonのバージョン) |
SECRET_KEY | Djangoの秘密鍵(settings.py の SECRET_KEY の値または.envに書いた値) |
SECRET_KEYに関しては、こちら↓を参考にしてください。



デプロイの確認
「Events」タブでビルドのログが確認できます。==> Build successful 🎉 と表示されればデプロイ成功です。
画面上部のURLをクリックしてアプリが表示されることを確認しましょう。
注意
無料プランでは初回ビルドに数分かかることがあります。
また、一定時間アクセスがないとスリープ状態になり、次のアクセス時に起動まで数分かかります。
コード修正方法
コードを修正してRenderに反映させる手順は以下の通りです。
PaizaCloudで修正した場合
ターミナルで以下を実行します:
git status
git add .
git commit -m "修正内容のコメント"
git push origin master
GitHubにプッシュすると、Renderが自動的に新しいコードを検知してデプロイを開始します。
GitHub Codespacesで修正した場合
git add .
git commit -m "修正内容のコメント"
git push origin main
Codespacesの場合はアクセストークンが不要なため、よりシンプルです。
GitHubのWeb画面で直接修正する場合
GitHubでファイルを選択し、右上の鉛筆マーク(Edit this file)をクリックすれば直接編集できます。
編集後、「Commit changes」にコメントを書いて「Commit changes」をクリックすれば保存されます。
この場合もRenderの自動デプロイが走ります。
RenderでAdminに入れない
Renderへのデプロイ後にAdminページ(/admin/)を使いたい場合は、データベースのマイグレーションが必要です。
無料プランはコマンド入力できないので、以下の実行ができません。
python manage.py migrate
python manage.py createsuperuser
(無料プランで可能な対策)環境変数を使って自動(非対話)で作成する
Djangoには、環境変数にあらかじめ値をセットしておくことで、文字入力を求めずにスーパーユーザーを一発で作成する機能(createsuperuser --noinput)があります。
- Renderのダッシュボードで環境変数を設定する
対象のWeb Serviceの 「Environment」 クリックし、以下の3つの環境変数を追加して保存します。DJANGO_SUPERUSER_USERNAME: (例:admin)DJANGO_SUPERUSER_EMAIL: (例:admin@example.com)DJANGO_SUPERUSER_PASSWORD: (例:強固なパスワード)
- 「Save, rebuild, and deploy」で環境変数を保存
- スタートコマンドを以下のように書き換える
python manage.py migrate && python manage.py createsuperuser --noinput || true && gunicorn hajimete_pj.wsgi
- ※末尾に
|| trueを挟んでいるのは、2回目以降の起動時に「そのユーザーは既に存在します」というエラーで全体の起動がストップするのを防ぐためです。|| true(オア・トゥルー)は、「もし手前のコマンドが失敗(エラー)しても、それを無視して強制的に成功扱いにして次に進め!」という、Linuxやターミナルでよく使われるテクニックです。
補足
Renderの無料プランではデータが永続化されないことがあります(インスタンスが再起動するたびにリセット)。
データベースを永続化したい場合は、Renderの「PostgreSQL」サービスを別途追加するか、外部データベースサービスを利用してください。
Djangoのプログラミング部分についての記事は、こちらになります。
この記事を書いたイチゲを応援する(質問でもokです)
Vプリカでのお支払いがおすすめです。
MENTAやってます(ichige)
コメント