Django デプロイ作業(Part.3)
この記事では「Djangoのデプロイ作業」の基本的な流れを「Virtual Box」を利用して行います。作業内容は以下の通りです。
ローカル側(開発環境側)での作業
- 「settings.py」を編集する
- 利用しているパッケージを「requirements.txt」に出力する
- Githubへプロジェクトをpushする
サーバー側(本番環境側)での作業
- Virtual BoxにRocky Linux を準備する
- DBMS(この記事ではPostgreSQL)のインストールと設定
- gitのインストールと設定
- Githubからプロジェクトをクローンする
- python仮想環境の準備
- gunicornのインストールと設定
- Webサーバー(この記事ではnginx)のインストールと設定
サーバー側(本番環境側)での作業
PostgreSQLの準備
データベースのインストール
PostgreSQLのインストールは次のリファレンスを参考にして行います。Rocky Linux 9にサインインできたらルートユーザーに切り替えます。
今回の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の設定は次のリファレンスを参考にして行います。
データベースクラスターを初期化します。
[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の準備からです。
ブックマークのすすめ
「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。