🎿
Azureを使ってDjangoアプリのデプロイをしてみた①(webサーバー編)
はじめに
- Python, Azureの初学者です。
- Python, Djangoのキャッチアップをしています。
- Azureに詳しい先輩がおり、せっかくなので教えてもらいながらAzure(無料枠)を使ってデプロイしてみることにしました。
- PostgreSQLの作成は別の記事で紹介しています。
Azureを使ってDjangoアプリのデプロイをしてみた②(PostgreSQL編)
使用技術
- Python3.12
- Django
- Azure
概要
- 今回の流れを説明します。
- アプリの作成(Githubにpush済み)と、microsoft Azureにログインできているところから始めます。
- AzureでWeb Serviceの作成。
- Github Actionsを使った自動デプロイ。
- デプロイ後に本番環境で表示するまで。
実装
Web Serviceの作成。
ダッシュボードに行って確認し、サーバーを作成できているか確認してください。
Github Actionsを使った自動デプロイ。
-
Githubアカウントとの接続を行います。
-
連携できました。
デプロイしてみる
- 私はmainブランチを本番環境にデプロイしたいと思います。
- developブランチで作成したファイルをmainブランチにmergeする際に自動で本番環境にデプロイされます。
- このとき、エラーが現れることがあります。その時の注意点について下に記載します。
注意点①
-
リポジトリ内に
requirements.txt
というファイルがないと、Github Actions内のpip install -r requirements.txt
コマンド実行時にエラーが起きてしまいます。 -
下のコマンドでファイルを作成します。
-
作成したらGithubへ反映させてください。
-
初めに最上位のプロジェクトのディレクトリに移動します。
cd SampleProjrct
pip freeze > requirements.txt
- 作成された
requirements.txt
ファイルの階層に注意してください。- 例えば、もし/backendの下にファイルを配置してしまったときは、下のコードのように
.github/workflows/~~.yml
ファイルを書き換えてください。 -
.github/workflows/~~.yml
は自動生成されています。
- 例えば、もし/backendの下にファイルを配置してしまったときは、下のコードのように
- name: Install dependencies
run: pip install -r backend/requirements.txt
注意点②
- Github Actionsの実行中にエラーが出ることがあります。
-
Install independencies
の項目で下の内容のエラーが現れました。 - このとき
Processing
の箇所に注目してください。 - 今回のエラーではrequirements.txt内に不要なパッケージがあると指摘されています。
- ちなみに私のケースでは
@ file:///private/var/...
が不要と言われており、このパスは、ローカル環境に一時的に保存されたパッケージを指しています。 - /private/varの項目を
requirements.txt
から削除することでこのエラーは解決できました。
- ちなみに私のケースでは
Run pip install -r requirements.txt
pip install -r requirements.txt
shell: /usr/bin/bash -e {0}
env:
pythonLocation: /opt/hostedtoolcache/Python/3.12.9/x64
PKG_CONFIG_PATH: /opt/hostedtoolcache/Python/3.12.9/x64/lib/pkgconfig
Python_ROOT_DIR: /opt/hostedtoolcache/Python/3.12.9/x64
Python2_ROOT_DIR: /opt/hostedtoolcache/Python/3.12.9/x64
Python3_ROOT_DIR: /opt/hostedtoolcache/Python/3.12.9/x64
LD_LIBRARY_PATH: /opt/hostedtoolcache/Python/3.12.9/x64/lib
Processing /private/var/folders/nz/~~~~~~/T/abs_60q98_n2ty/croot/anaconda-anon-usage_1732732446690/work (from -r requirements.txt (line 1))
ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory: '/private/var/folders/nz/~~~~/T/abs_60q98_n2ty/croot/anaconda-anon-usage_1732733240/work'
- 階層構造については下記のコードを参照してください。
SampleProjrct
├── SampleApp
│ ├── __init__.py
│ ├── __pycache__
│ ├── admin.py
│ ├── apps.py
│ ├── migrations
│ ├── models.py
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── SoraGuchiProjrct
│ ├── asgi.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── manage.py
└── requirements.txt
注意点③
-
ALLOWED_HOSTS
を指定していない。 -
settings.py
ファイルでALLOWED_HOSTS
を指定していない場合、本番環境に反映されません。 - 下のコードのように
[]
の中に*
を記載するか、URLを記載することで解決ができます。
ALLOWED_HOSTS = ['*']
最後に
- 無料枠があるということと、興味本位でやってみました。
- 楽しかったです。
- 記載内容に誤り等あれば教えてください。
参考文献
Discussion