06-Django

Django デプロイ(1)|「Django」が学べる ITスクール情報|現役エンジニア&プログラミングスクール講師

Django デプロイ作業(Part.1)

この記事では「Djangoのデプロイ作業」の基本的な流れを「Virtual Box」を利用して行います。作業内容は以下の通りです。

ローカル側(開発環境側)での作業

  1. 「settings.py」を編集する
  2. 利用しているパッケージを「requirements.txt」に出力する
  3. Githubへプロジェクトをpushする

サーバー側(本番環境側)での作業

  1. Virtual BoxにRocky Linux を準備する
  2. DBMS(この記事ではPostgreSQL)のインストールと設定
  3. gitのインストールと設定
  4. Githubからプロジェクトをクローンする
  5. python仮想環境の準備
  6. gunicornのインストールと設定
  7. Webサーバー(この記事ではnginx)のインストールと設定

ローカル側(開発環境側)での作業

ローカル側では次の作業を行います。

  1. 「settings.py」の編集
  2. 「requirements.txt」の出力
  3. Githubへのプロジェクトのpush

settings.pyの編集

プロジェクトフォルの中にあるsettings.pyですが、デプロイ前には次の処理を行っておきます。

  1. プロジェクトフォルダ内に新しく「settings」フォルダを準備する。
  2. 「開発環境用のsettings.py」を準備する。→この記事では「settings_develop.py」
  3. 「本番環境用のsettings.py」を準備する。→この記事では「settings_product.py」
  4. 「共通で利用できるsettings.py」を準備する→この記事では「base.py」
  5. 「settings」フォルダに「__init__.py」を作成する。

まずは、「settings.py」のあるディレクトリに「settings」ディレクトリを準備します。その後、準備した「settings」ディレクトリに「settings.py」を移動して名前を「base.py」に変更します。

本番環境は「production environment」と呼ぶので、「settings_product.py」という名前が気になる方は「settings_production.py」としてください。

続けて、「settings_develop.py」、「settings_product.py」、「__init__.py」の3つのファイルを「settings」フォルダ内に新規で準備します。

(__pycache__ディレクトリは作業中に自動的に生成されるものなので開発者が作成したりはしません。)

(再確認)もとの「settings.py」の名前を変更して「settings」フォルダに移動したものが「base.py」です。

「settings_develop.py」と「settings_product.py」には開発環境と本番環境で設定が変更される部分をそれぞれ「base.py」から抜き出しておきます。

「__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

これは「main.py」のある階層に対して「base.py(もとのsettings.py)」の位置がディレクトリをひとつ増やして階層が深くなったためです。

以上で「settings.py」の編集は終了です。

ここまで編集が終わったら「python manage.py runserver」コマンドで実行ができるかを確認します。(開発環境としての実行です。)もし、実行ができない場合は記述ミスがあります。

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の操作からです。

ブックマークのすすめ

「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】| 現役エンジニア&プログラミングスクール講師「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】について解説している記事です。削除方法も掲載しています。...
【パソコン選び】失敗しないための重要ポイント | 現役エンジニア&プログラミングスクール講師【パソコン選び】失敗しないための重要ポイントについての記事です。パソコンのタイプと購入時に検討すべき点・家電量販店で見かけるCPUの見方・購入者が必要とするメモリ容量・HDDとSSDについて・ディスプレイの種類・バッテリーの持ち時間や保証・Officeソフト・ウィルス対策ソフトについて書いています。...
RELATED POST
06-Django

Django デプロイ(6)| 「Django」が学べる ITスクール情報|現役エンジニア&プログラミングスクール講師

2023年10月17日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
06-Django

Django デプロイ(4)|「Django」が学べる ITスクール情報|現役エンジニア&プログラミングスクール講師

2023年10月16日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
06-Django

Django デプロイ(まとめ)|「Django」が学べる ITスクール情報|現役エンジニア&プログラミングスクール講師

2023年10月12日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
06-Django

Django デプロイ(5)|「Django」が学べる ITスクール情報|現役エンジニア&プログラミングスクール講師

2023年10月17日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
06-Django

Django デプロイ(3)|「Django」が学べる ITスクール情報|現役エンジニア&プログラミングスクール講師

2023年10月15日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
06-Django

Django デプロイ(2)|「Django」が学べる ITスクール情報|現役エンジニア&プログラミングスクール講師

2023年10月14日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site