06-Django

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

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

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

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

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

PostgreSQLの準備

データベースのインストール

PostgreSQLのインストールは次のリファレンスを参考にして行います。Rocky Linux 9にサインインできたらルートユーザーに切り替えます。

https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/9/html/configuring_and_using_database_servers/installing-postgresql_using-postgresql

今回のRocky Linux 9が標準で利用するPostgreSQLのバージョンを確認する場合は次のコマンドを入力します。
[root@localhost ~]# dnf info postgresql-server
違うバージョンを利用する場合はリファレンスに従ってください。

PostgreSQL サーバーパッケージをインストールします。

[root@localhost ~]# dnf install postgresql-server

Is this okと聞かれるので「y」と入力します。

Is this ok [y/N]: y

インストールが完了します。

データベースの設定

PostgreSQLの設定は次のリファレンスを参考にして行います。

https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/9/html/configuring_and_using_database_servers/con_postgresql-users_using-postgresql

データベースクラスターを初期化します。

[root@localhost ~]# postgresql-setup –initdb

設定ファイルの編集を行います。

[root@localhost ~]# vi /var/lib/pgsql/data/postgresql.conf

viエディタのコマンドモードで「/password」として「#password_encryption = md5」の行を検索します。

検索後「Enterキー」を押下して、「i」を押下します(インサートモードに切り替えます)。該当箇所を次のように編集します。

password_encryption = scram-sha-256

コマンドモードに切り替えて保存します。(「:wq」で上書き保存し終了します。)

続けて「pg_hba.conf」の設定を行います。

[root@localhost ~]# vi /var/lib/pgsql/data/pg_hba.conf

IPv4 local connections:の最後の部分(一番右側の設定)を
「ident」から「scram-sha-256」に変更します。

コマンドモードに切り替えて保存します。(「:wq」で上書き保存し終了します。)

postgresql サービスを起動します。

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

エラーが表示されなければ起動しています。
systemctl status postgresql.serviceで稼働しているかの確認もできます。

postgres という名前のシステムユーザーとしてログインします。(postgres はPostgreSQLをインストールした時から準備されているユーザーです。)

[root@localhost ~]# su – postgres

プロンプトが切り替わります。

[postgres@localhost ~]$

PostgreSQL インタラクティブターミナルを起動します。

[postgres@localhost ~]$ psql
psql (13.11)
Type “help” for help.

Postgreのインタラクティブターミナルが起動しプロンプトが次のようになります。

postgres=#

現在のデータベース接続に関する情報を取得するには次のように入力します。
プロンプト上では「¥」はバックスラッシュで表示されます。

postgres=# \conninfo

djangoで利用する「ユーザー」と「パスワード」を作成します。下のSQL文の赤文字部分がそれぞれ「ユーザー」と「パスワード」になります。

文法
postgres=# CREATE USER mydbuser WITH PASSWORD ‘mypasswd’;

この記事では「ユーザー」をdjangouser、「パスワード」を ‘password’として設定します。本来であればパスワードは推測されにくいもので作ります。

postgres=# CREATE USER djangouser WITH PASSWORD ‘password’;

djangodatabase という名前のデータベースを作成します。

postgres=# CREATE DATABASE djangodatabase;

djangouserへ権限を付与します。

postgres=# GRANT ALL PRIVILEGES ON DATABASE djangodatabase TO djangouser;

\q メタコマンドを使用して、インタラクティブターミナルからログアウトします。

postgres-# \q

postgres ユーザーセッションからログアウトします。

[postgres@localhost ~]$ logout

djangouserとして PostgreSQL ターミナルにログインし、ホスト名を指定して、初期化中に作成されたデフォルトの postgres データベースに接続します。

PostgreSQLを再起動します。

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

新しく作成したユーザーでログインします。
[root@localhost ~]# psql -U djangouser -h 127.0.0.1 -d djangodatabase

パスワードを入力します。
Password for user djangouser:password
psql (13.11)
Type “help” for help.

プロンプトが変わります。

djangodatabase =>

タイムゾーンをDjangoと合わせます。

djangodatabase => ALTER ROLE djangouser SET timezone TO ‘UTC’;

\q メタコマンドを使用して、インタラクティブターミナルからログアウトして、Rocky Linux 9 のルートユーザーに戻ります。

djangodatabase => \q

プロンプトが切り替わります。

[root@localhost ~]#

Postgreデータベースの設定は以上です。

データベースに関わる「settings.py」の編集

viエディタで「settings.py」(この記事では「settingsフォルダの中のsettings_product.pyファイル」)を開き、「DATABASES」部分を次のように編集します。

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.postgresql_psycopg2',
        'NAME': 'djangodatabase',   # データベース名
        'USER': 'djangouser',       # ユーザー名
        'PASSWORD': 'password',     # パスワード
        'HOST': '"127.0.0.1',        # ループバックアドレス
        'PORT': '5432',             # ポート番号:5432
    }
}

設定は以上です。

Djangoデプロイの第3回目の記事は以上です。次回はRocky Linux 9へのGitの準備からです。

ブックマークのすすめ

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

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