Django デプロイ作業(Part.1)
この記事では「Djangoのデプロイ作業」の基本的な流れを「Virtual Box」を利用して行います。作業内容は以下の通りです。
ローカル側(開発環境側)での作業
- 「settings.py」を編集する
- 利用しているパッケージを「requirements.txt」に出力する
- Githubへプロジェクトをpushする
サーバー側(本番環境側)での作業
- Virtual BoxにRocky Linux を準備する
- DBMS(この記事ではPostgreSQL)のインストールと設定
- gitのインストールと設定
- Githubからプロジェクトをクローンする
- python仮想環境の準備
- gunicornのインストールと設定
- Webサーバー(この記事ではnginx)のインストールと設定
ローカル側(開発環境側)での作業
ローカル側では次の作業を行います。
- 「settings.py」の編集
- 「requirements.txt」の出力
- Githubへのプロジェクトのpush
settings.pyの編集
プロジェクトフォルの中にあるsettings.pyですが、デプロイ前には次の処理を行っておきます。
- プロジェクトフォルダ内に新しく「settings」フォルダを準備する。
- 「開発環境用のsettings.py」を準備する。→この記事では「settings_develop.py」
- 「本番環境用のsettings.py」を準備する。→この記事では「settings_product.py」
- 「共通で利用できるsettings.py」を準備する→この記事では「base.py」
- 「settings」フォルダに「__init__.py」を作成する。
まずは、「settings.py」のあるディレクトリに「settings」ディレクトリを準備します。その後、準備した「settings」ディレクトリに「settings.py」を移動して名前を「base.py」に変更します。
続けて、「settings_develop.py」、「settings_product.py」、「__init__.py」の3つのファイルを「settings」フォルダ内に新規で準備します。
(__pycache__ディレクトリは作業中に自動的に生成されるものなので開発者が作成したりはしません。)
「__init__.py」ファイルには次のように入力します。
# 本番環境
from .settings_product import *
try:
# 開発環境
from .settings_develop import *
except:
pass
base.py(もとのsettings.py)から開発環境用の「settings_develop.py」と本番環境用の「settings_product.py」へ「SECRET_KEY」「DEBUG」「ALLOWED_HOSTS」「DATABASES」を切り取り、貼り付けます。この記事では少し編集を加えたため若干の違いがありますが、本来なら、どちらにも同じ状態が作成されています。
from .base import *
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'django-insecure-***この部分はデフォルトの鍵が入っています。***'
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
#この部分には開発環境でのIPアドレスを入れています。
ALLOWED_HOSTS = ["127.0.0.1", "192.168.2.139"]
# Database
# https://docs.djangoproject.com/en/4.1/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
もう一つのファイル「settings_product.py」を次のように編集します。
from .base import *
# SECURITY WARNING: keep the secret key used in production secret!
# 何も入力しません。
SECRET_KEY = ''
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = False
#この部分には本番環境でのIPアドレスを入れます。現在は「*」としています。
ALLOWED_HOSTS = [" * "]
# Database
# https://docs.djangoproject.com/en/4.1/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
「base.py」の中にある「BASE_DIR」の箇所を次のように編集します。
(編集前)BASE_DIR = Path(__file__).resolve().parent.parent
(編集後)BASE_DIR = Path(__file__).resolve().parent.parent.parent
以上で「settings.py」の編集は終了です。
requirements.txtの作成
開発しているDjangoプロジェクトで利用しているパッケージのメモをとります。これにはプロジェクトフォルダをカレントディレクトリとして次のコマンドを入力します。
pip freeze > requirments.txt
requirments.txtが生成されます。中身はプロジェクトで利用している全てのパッケージが一行ごとに記載されています。
gitの作業
以下の作業が済んでいる前提で記事を進めています。
Gitのインストール
https://howahowablog.com/git-install/Gitの設定
https://howahowablog.com/git-config/Githubへプロジェクトをpushする前に、pushの対象から外すファイルを.gitignoreに指定します。(下は参考)
「.gitignore」の中身は、こちらのサイトを利用して基本設定を自動生成して、個別に必要な部分のみ追記します。表示される検索ボックスに「Django」と入力して「作成する」をクリックします。
https://www.toptal.com/developers/gitignore
表示された内容を「Ctrl + A」で全選択して「Ctrl + C」でコピーします。コピーしたら、「.gitignore」ファイルへ「Ctrl + V」でペーストします。
追記したいディレクトリやファイルを入力します。(/authは開発中に個別の設定を行ったファイルを格納していました。/settings_develop.pyはローカル側で利用している情報なのでpushから除外しています。)
プロジェクトをgit initでgit管理下にします。(開発時にすでにGit管理下にしていればこの作業は必要ありません。)
git add .で「.gitignore」に記述されたファイル以外をステージングエリアへ追加します。ステージングエリアに追加されるとファイルの横のアルファベットが「U」から「A」に変わります。
Djangoデプロイの第1回目の記事は以上です。次回はGithubへのpushの操作からです。
ブックマークのすすめ
「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。