06-Django

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

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

この記事では「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)のインストールと設定

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

この記事は第4回目からの続きの操作となっています。

python仮想環境の準備

Rocky Linux上でpython仮想環境を作成

Rocky Linux 9 にはすでにpython3.9がインストールされているので、これを利用してpython仮想環境を作成します。

次のコマンドでGithubからクローンしたPosプロジェクトが確認できます。このプロジェクトディレクトリをカレントディレクトリとして仮想環境を作成します。
[django@localhost pos]$ ls
Pos

Posプロジェクトへ移動します。
[django@localhost pos]$ cd Pos
中身を確認します。main.pyがあることを確認します。
[django@localhost Pos]$ ls
README.md main.py pos requirements.txt

pythonがインストールされているか、どのバージョンか、複数存在するかなどを念のため確認します。
[django@localhost Pos]$ python -V
Python 3.9.16

venvを利用してpython仮想環境「env(名前はenvでなくても構いません)」を作成します。
[django@localhost Pos]$ python3 -m venv env
中身を確認します。
[django@localhost Pos]$ ls
envが確認できます。
README.md env main.py pos requirements.txt

python仮想環境を立ち上げます。
[django@localhost Pos]$ source env/bin/activate
プロンプトが変わりpython仮想環境が立ち上がったのが確認できます。
(env) [django@localhost Pos]$

インストールされているパッケージを出力(メモするため)できる「freeze」をpipを利用してインストールします。(今後、本番環境内でいろいろなパッケージをインストールするため、そのメモをとるのにfreezeが必要になります。)
(env) [django@localhost Pos]$ pip freeze

ひとまず、Githubからクローンしたプロジェクトにあるrequirements.txtを利用して必要なパッケージをインストールします。これで開発環境側で利用していたパッケージと同じパッケージを同じバージョンで全てインストールできます。

(env) [django@localhost Pos]$ pip install -r requirements.txt

インストール後に次の表示が出た場合はpipをアップグレードしておきます。

(env) [django@localhost Pos]$ python3 -m pip install –upgrade pip

シークレットキーの生成と設定

続けて、本番環境用のシークレットキーを生成して「settings_product.py」に登録します。

manage.pyのあるディレクトリに移動してインタラクティブシェルを起動します。

(env) [django@localhost Pos]$ cd pos
(env) [django@localhost pos]$ python manage.py shell
Python 3.9.16 (main, Sep 12 2023, 00:00:00)
[GCC 11.3.1 20221121 (Red Hat 11.3.1-4)] on linux
Type “help”, “copyright”, “credits” or “license” for more information.
(InteractiveConsole)

シークレットキーの再生成をします。

>>> from django.core.management.utils import get_random_secret_key

>>>get_random_secret_key()

鍵が生成されるのでクリップボードにコピーします。(Cockpitのターミナルだと右クリックでコピーができます。)

‘xv!*********************************************7@f)’

次のコマンドでpython仮想環境に戻ります。

>>> exit()

python仮想環境に戻ったら、viエディタを利用して「settingsディレクトリ」内の「settings_product.pyファイル」にある「SECRET_KEY」部分に貼り付けます。

os.environを利用して環境変数からの取り出しもできますが、今回は直接貼り付けています。

from .base import *

# SECURITY WARNING: keep the secret key used in production secret!
# 新しいシークレットキーを設定します。
SECRET_KEY = 'xv!*********************************************7@f)'
# 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.postgresql_psycopg2',
        'NAME': 'djangodatabase',   # データベース名
        'USER': 'djangouser',       # ユーザー名
        'PASSWORD': 'password',     # パスワード
        'HOST': '"127.0.0.1',        # ループバックアドレス
        'PORT': '5432',             # ポート番号:5432
    }
}

pythonからPostgreSQLに接続するためのモジュールのインストール

python仮想環境が作成とシークレットキーの設定ができたので、ここで初めて、pythonからPostgreSQLに接続するためのモジュールをpipを利用してインストールします。(この記事ではビルド済みの「psycopg2-binary」をインストールします。)

(env) [django@localhost Pos]$ pip install psycopg2-binary

python仮想環境を終了します。

(env) [django@localhost pos]$ deactivate

ルートユーザーに切り替えてPostgreSQLの稼働状況を確認します。

[django@localhost pos]$ su –
Password:
[root@localhost ~]# service postgresql status

以下のように表示された場合は、起動する必要があります。
Redirecting to /bin/systemctl status postgresql.service
○ postgresql.service – PostgreSQL database server
Loaded: loaded (/usr/lib/systemd/system/postgresql.service; disabled; preset: disabled)
Active: inactive (dead)

PostgreSQLを起動します。

[root@localhost ~]# systemctl start postgresql.service

ルートユーザーを抜けて再度、python仮想環境を起動します。
[root@localhost ~]# exit
logout

python仮想環境「env」を持っているディレクトリに移動します。
(この記事では「Pos」ディレクトリです。)
[django@localhost pos]$ cd ../

python仮想環境を起動します。
[django@localhost Pos]$ source env/bin/activate

「manage.py」があるディレクトリに移動します。(この記事では「Posプロジェクト」直下の「posディレクトリ」となります。)
(env) [django@localhost Pos]$ cd pos

データベースのアクセスをチェックします。
(env) [django@localhost pos]$ python manage.py check –database default
System check identified no issues (0 silenced).

マイグレーションします。
(env) [django@localhost pos]$ python manage.py makemigrations
No changes detected
(env) [django@localhost pos]$ python manage.py migrate

Djangoアプリケーションのスーパーユーザーを作成します。

(env) [django@localhost pos]$ python manage.py createsuperuser
ユーザー名 (leave blank to use ‘django’): admin

この記事ではユーザー名をadminとしていますが、名前は自由に決めれます。


メールアドレス:
Password: ←パスワードを入力
Password (again): ←確認としてパスワードを再度入力
このパスワードは ユーザー名 と似すぎています。
このパスワードは短すぎます。最低 8 文字以上必要です。
このパスワードは一般的すぎます。

Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.
(env) [django@localhost pos]$

ここまでで、DjangoとPostgreSQLの連携の設定が終了しました。

Djangoデプロイの第5回目の記事は以上です。次回はGunicornの準備からです。

ブックマークのすすめ

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

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

2023年10月13日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア 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 デプロイ(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