🏐
Azureを使ってDjangoアプリのデプロイをしてみた②(PostgreSQL編)
前回の続きです。
Azureを使ってDjangoアプリのデプロイをしてみた①(webサーバー編)
はじめに
- Python, Azureの初学者です。
- Python, Djangoのキャッチアップをしています。
- Azureに詳しい先輩がおり、せっかくなので教えてもらいながらAzure(無料枠)を使ってデプロイしてみることにしました。
使用技術
- Python3.12
- Django
- Azure
- PostgreSQL
概要
- 今回の流れを説明します。
- アプリの作成(Githubにpush済み)、Azureでwebサーバーとリソースグループが作成できているところから始めます。
- Azure Database for PostgreSQL フレキシブルサーバーの作成。
- データベースの作成。
- Djangoアプリとの紐付け。
1. Azure Database for PostgreSQL フレキシブルサーバーの作成
基本
- リソースグループはwebサーバー作成時に作ったものを使います。
- 可用性ゾーンを利用することで、データベースに障害が発生した場合でも、システムが継続して動作するように設計できます。今回は、Azureは最適な可用性ゾーンを自動的に選択する優先度なしを選択します。
https://learn.microsoft.com/ja-jp/azure/reliability/availability-zones-overview?tabs=azure-cli - サーバーの構成を選択し、ストレージの設定をします。
ストレージの設定
ネットワーク
- 現在のクライアントIPアドレスを追加するを押して、ファイアウォール規則名を追加します。
セキュリティ
タグ
- 全て入力したら作成をします。
作成したものを確認します。
2. データベースの作成。
-
データベースの項目に移動するとデフォルトでいくつかのデータベースが自動生成されています。
-
接続を押してPostgreSQLを触ってみます。
-
以下のコマンドでPostgreSQLにアクセスします。
-
テーブルの作成は、
3. Djangoアプリとの紐付け。
の項目で行います。
psql "host=<server> port=<port> user=<admin-user> dbname=postgres sslmode=require"
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
コマンドでテーブルが作成できているか確認してみてください。
参考文献
Discussion