🙆‍♀️

DjangoアプリをHerokuでデプロイ

2023/04/21に公開約1,600字

目的

ローカル環境でDjangoのアプリ開発を行い、Herokuを利用してデプロイしたい。

制約

  • HerokuのPestgreSQLを使用する。
  • 追加のライブラリやパッケージのインストールを行う場合、概要とインストールする理由を簡潔に説明する。

前提

  • プロジェクト名: RoomShareMatch
  • ローカル環境でDjangoのアプリ開発済み。
  • GitHubアカウント作成済み。
  • ローカル環境にGitインストール済み。
  • GitHubのリモートリポジトリでソースコード管理。
  • Herokuアカウント作成済み。
  • ローカル環境にHerokuCLIインストール済み。

プロジェクトの準備

指定のフォルダに配置

gitからファイルをcloneして正常に起動するか確認

git clone http...(リポジトリ)
cd プロジェクト名
python manage.py runserver

Herokuにデプロイする準備

Herokuは、requirements.txtファイルとProcfileファイルを使用して、アプリケーションの実行方法を把握します。まず、Djangoアプリケーションのルートディレクトリにファイルを作成し、使用しているPythonパッケージとバージョンを記述。

requirements.txtに以下を追加

バージョンは都度確認

Django==3.2.10
gunicorn==20.1.0
dj-database-url==0.5.0
psycopg2-binary==2.8.6
whitenoise==5.3.0

Django

Djangoフレームワークを使用するために必要です。

gunicorn

Gunicornは、Python WSGI(Web Server Gateway Interface)HTTPサーバーです。DjangoアプリケーションをHerokuなどのプラットフォームで実行する場合、Gunicornを使用してアプリケーションをサーブします。

dj-database-url

環境変数からDjangoのデータベース設定を簡単に構成できるようにするパッケージです。これにより、HerokuのPostgreSQLサービスなどの外部データベースを簡単に使用できます。

psycopg2-binary

PythonでPostgreSQLデータベースと通信するためのアダプタです。このパッケージを使用することで、DjangoアプリケーションがHerokuで提供されるPostgreSQLデータベースに接続できます。

whitenoise

Pythonアプリケーションで静的ファイル(CSS、JavaScript、画像など)を簡単にサーブできるようにするミドルウェアです。これにより、静的ファイルを効率的に配信するための追加の設定やインフラストラクチャが不要になります。特に、Herokuでアプリケーションを実行する場合に有用です。

Procfileに以下を追加

echo "web: gunicorn プロジェクト名.wsgi" > Procfile

プロジェクトの設定変更settings.py

ALLOWED_HOSTS

ALLOWED_HOSTS = ['*']

データベース設定を変更

HerokuのPostgreSQLサービスを使用するようにデータベース設定を変更。

# 変更
import dj_database_url

DATABASES = {
    'default': dj_database_url.config(default='sqlite:///db.sqlite3')
}

Herokuの準備

Djangoのデプロイ準備

Discussion

ログインするとコメントできます