Zenn
🏐

Azureを使ってDjangoアプリのデプロイをしてみた②(PostgreSQL編)

2025/03/17に公開

前回の続きです。

Azureを使ってDjangoアプリのデプロイをしてみた①(webサーバー編)

はじめに

  • Python, Azureの初学者です。
  • Python, Djangoのキャッチアップをしています。
  • Azureに詳しい先輩がおり、せっかくなので教えてもらいながらAzure(無料枠)を使ってデプロイしてみることにしました。

使用技術

  • Python3.12
  • Django
  • Azure
  • PostgreSQL

概要

  • 今回の流れを説明します。
  • アプリの作成(Githubにpush済み)、Azureでwebサーバーとリソースグループが作成できているところから始めます。
  1. Azure Database for PostgreSQL フレキシブルサーバーの作成。
  2. データベースの作成。
  3. Djangoアプリとの紐付け。

1. Azure Database for PostgreSQL フレキシブルサーバーの作成

基本

  • リソースグループはwebサーバー作成時に作ったものを使います。
  • 可用性ゾーンを利用することで、データベースに障害が発生した場合でも、システムが継続して動作するように設計できます。今回は、Azureは最適な可用性ゾーンを自動的に選択する優先度なしを選択します。
    https://learn.microsoft.com/ja-jp/azure/reliability/availability-zones-overview?tabs=azure-cli
  • サーバーの構成を選択し、ストレージの設定をします。
    Image from Gyazo

ストレージの設定

  • 右側に金額が表示されます。できるだけ安くなるように設定します。
  • あくまで無料枠であり、枠を超えた時にかかる料金です。
  • 設定が完了したら保存して前のページに戻ります。
    Image from Gyazo

Image from Gyazo

  • 今回、データベースへのアクセスを制限するために、認証方法はPostgreSQLのみにします。
    Image from Gyazo

ネットワーク

Image from Gyazo

  • 現在のクライアントIPアドレスを追加するを押して、ファイアウォール規則名を追加します。

Image from Gyazo


セキュリティ

  • 今回はサービスを提供する側なのでサービスマネージドキーを選択します。
    Image from Gyazo

タグ

  • タグはつけません。
    Image from Gyazo

  • 全て入力したら作成をします。

作成したものを確認します。

  • このようになっていればOKです。
  • 確認したらデータベースに移動してください。
    Image from Gyazo

2. データベースの作成。

  • データベースの項目に移動するとデフォルトでいくつかのデータベースが自動生成されています。

  • 新しくテーブルを追加したいので、「追加」を押してください。
    Image from Gyazo

  • データベース名を入力して保存を押して作成。
    Image from Gyazo

  • データベースが作成されました。
    Image from Gyazo

  • 接続を押してPostgreSQLを触ってみます。

  • 以下のコマンドでPostgreSQLにアクセスします。

  • テーブルの作成は、3. Djangoアプリとの紐付け。の項目で行います。

psql "host=<server> port=<port> user=<admin-user> dbname=postgres sslmode=require"

psqlを使用した接続の仕方の参考文献
Image from Gyazo

3. Djangoアプリとの紐付け。

Djangoのアプリの中身を書き換えていきます。

  • .envファイルの作成。
  • 下記の階層を参考に.envファイルを作成します。
SampleProject
├── README.md
├── SampleApp
│   ├── __init__.py
│   ├── __pycache__
│   ├── admin.py
│   ├── apps.py
│   ├── forms.py
│   ├── migrations
│   ├── models.py
│   ├── tests.py
│   ├── urls.py
│   └── views.py
├── SampleProjrct
│   ├── __init__.py
│   ├── __pycache__
│   ├── asgi.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
├── db.sqlite3
├── manage.py
├── requirements.txt
├── .env
└── templates
.env
SECRET_KEY=~~~~~
DEBUG=False
DATABASE_URL=postgres://posrgresqladmin:~~~~@sampleserver.postgres.database.azure.com:5432/sampleapp?sslmode=require
settings.py
~~~
#.envファイル読み込み
env = environ.Env()
env.read_env('.env')

#.envファイルを参照。
SECRET_KEY = env('SECRET_KEY')

DEBUG = env('DEBUG')
~~~
DATABASES = {
    'default': env.db()
}
~~~
  • .gitignoreにも追記しましょう。
.gitignore
.env

テーブルの作成。

  • データベースからPostgreSQLにアクセスし、テーブルを作成します。
python manage.py makemigrations
python manage.py migrate
  • 完了したら先ほどのpsqlコマンドでテーブルが作成できているか確認してみてください。

参考文献

https://learn.microsoft.com/ja-jp/azure/reliability/availability-zones-overview?tabs=azure-cli
https://learn.microsoft.com/ja-jp/azure/postgresql/flexible-server/quickstart-create-server?tabs=portal-create-flexible%2Cportal-get-connection%2Cportal-delete-resources
https://zenn.dev/hathle/articles/django-postgresql

Discussion

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