Django Postgres Linux 環境設定方法・注意点まとめ

Estimated read time 3 min read

Amazonlinux Django Postgres環境設定に関する諸々の手順、注意事項をまとめておきます。

●python依存関係パッケージをインストールします
# sudo yum groupinstall “Development Tools” -y
# sudo yum install openssl-devel libffi-devel bzip2-devel -y

●Python をダウンロードします。 ここでは ver 3.10.4
# sudo wget https://www.python.org/ftp/python/3.10.4/Python-3.10.4.tgz

●ダウンロードしたファイルを解凍します
# tar xvf Python-3.10.4.tgz
# cd Python-3.10.4

●pythonをインストールします(ここでは ver3.10)
# ./configure –enable-optimizations
# sudo make altinstall

●pythonのバージョン確認
# python3.10 –version

●python仮想環境にてGunicorn用モジュール(ここでは ver20.1.0)をインストールする
$ sudo python3 -m venv /home/django/xxxxxxxx
$ pip install gunicorn==20.1.0

●nginxのリポジトリ作成
$ dnf install dnf-utils # dnf-utils なるものを入手
vi /etc/yum.repos.d/nginx.repo # リポジトリを追加

記載内容は以下の通り
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

●nginxのインストール
$ dnf install nginx

●DJANGO_SECRET_KEYの確認・設定
pycharmのツールウィンドウからpythonコンソールを選択し、pythonコンソールを開く

以下のコマンドを入力し、secret_keyを取得する
>>>from django.core.management.utils import get_random_secret_key
>>>get_random_secret_key()

‘&fdagd5kpgadgam^!^uezd9ye)fdagadghahgdhijfdafo(sdz5n9i6n@dnk(t1vht’
(上記は仮のkey)

●django環境変数の設定
(ログイン後のホームディレクトリに新規作成する。)

$ vi ~/.bash_profile
export ・・・
export ・・・

最後尾に
DJANGO_SECRET_KEY=’&fdagd5kpgadgam^!^uezd9ye)fdagadghahgdhijfdafo(sdz5n9i6n@dnk(t1vht’
(仮のkey)

●パスの有効化
$ source ~/.bash_profile

●logの出力先ディレクトリを作成する
/home/django/xxxxxxx/xxxxxx_xxxxxx_rep/xxxxxx_xxxxxx
$ mkdir logs

●python仮想環境にてdjango-allauth、django-bootstrap5をインストール
$ pip install django-allauth
$ pip install django-bootstrap5

●pillowのインストール
$ python -m pip install Pillow

●ネットワークインターフェイス(ここではeth1)の設定を行います。
# cd /etc/sysconfig/network-scripts/
# vi ifcfg-eth1
ifcfg-eth1の内容は以下のようにします。

DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=172.21.***.***
NETMASK=255.255.254.0

●route-eth1の内容は以下のようになります。
# vi route-eth1
xxx.xx.x.x/xx via xxx.xx.x.x dev eth1
※[リージョンのネットワークアドレス] via [eth1のゲートウェイのIPアドレス] dev eth1

●ファイアウォールの現状設定を確認し、サービス設定(http、https)を追加
$ firewall-cmd –list-all
# firewall-cmd –add-service=http –zone=public –permanent
# firewall-cmd –add-service=https –zone=public –permanent

●ファイアウォールの設定を再読み込み
$ firewall-cmd –reload

●8000ポートを開放
$ firewall-cmd –add-port=8000/tcp –permanent

●certbotのインストール、ssl証明書と秘密鍵の発行
$ sudo yum install certbot
$ sudo certbot certonly –webroot -w /usr/share/nginx/html -d xxxxxx-xxxxx.com -m xxxxx.xxxxxx.xxx@xxxxx.com –agree-tos

●ssl証明書の自動更新設定例
$ sudo crontab -e
0 3 1 * * sudo certbot renew -q –renew-hook “/usr/bin/systemctl reload nginx.service”

●Nginxの設定を変更し、ファイルのアップロードサイズ上限を10MBに変更
server {

client_max_body_size 10M;
}

●DBにpostgresqlを使用するための設定

●Postgre SQLリポジトリを追加します。
$ sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm

●既存のモジュールの方は、無効にしておきます。
$ sudo dnf -qy module disable postgresql

●アップデートを行い、インストールを実行する。
$ sudo dnf update -y
$ sudo dnf install -y postgresql15-server

●「initdb」で先に初期化を行っておきます。
$ sudo /usr/pgsql-15/bin/postgresql-15-setup initdb
Initializing database … OK

●PostgreSQLサービスの自動起動設定と開始を行います。
$ sudo systemctl enable –now postgresql-15

↓ 開始のみ場合は以下を実行します。
$ sudo systemctl start postgresql-15

●settings.py の DB設定を postgresql用に修正 

●rootユーザに対してロールの設定を行う。
 ログインユーザのpostgresのロールが設定されていないと、migrate実施時のDBアクセス実施時にエラーとなってしまう。
 (PostgreSQLユーザアカウントは、オペレーティングシステムのユーザアカウントとは異なります)

$ sudo -i -u postgres
$ psql

●にてログインしてから以下のコマンドを実施
$ create user root;

postgres=# ¥du にてロールの確認を実施する。

●その後 rootユーザーに対して create DB の権限を付与する
alter role root createdb;

●その後、本番環境のpostgresにデータベース作成を行う。
create database xxxx_xxxxxx owner root;

●bashファイルのDBユーザー名・パスワードを編集(もし変更していたら)
vi ~/.bash_profile

ここまででpostgresqlの設定完了

Pgadminからログインするユーザの作成

●pgadminログイン用のユーザを作成し、createDB superuser権限を付与する
postgres=# CREATE ROLE pgadmin WITH PASSWORD ‘パスワード’;
postgres=# ALTER ROLE pgadmin LOGIN;
alter role pgadmin createdb;
alter role pgadmin superuser;
※superuser権限が無いと、pgadminにてDBの中身を確認する事が出来ない。

●djangoからemailを送信する設定
ADMINSの設定
settings.pyの「ADMINS」を設定します。ここに記載されているメールアドレスにDjangoのエラー情報が送信されます。

ADMINS = [(‘xxx xxxxxxxx’, ‘xxxxxx.xxxxxxx.xxxx@xxxxx.com’)]
SERVER_EMAIL(送信元アドレスの設定)
settings.pyに送信元アドレス「SERVER_EMAIL」を設定します。

SERVER_EMAIL = ‘xxxxxx.xxxxxxx.xxxx@xxxx.com’

使用するメールがgmailの場合は自分のアイコンをクリックして「Google アカウントの管理」をクリックします。
画面左側のメニューから「セキュリティ」を選択します。
「Googleへのログイン」の「2段階認証プロセス」を画面の指示に従い有効にします。
セキュリティのページの「Googleへのログイン」の「アプリ パスワード」を選択します。
「デバイスを選択」から「その他」を選択して名前を入力します。
「生成」ボタンをクリックすると「お使いのデバイスのアプリ パスワード」が生成されるのでそのパスワードをメモしておきます。
Eメール設定
setting.pyに下記の設定を追加します。

EMAIL_HOST = ‘smtp.gmail.com’
EMAIL_PORT = 587
EMAIL_HOST_USER = ‘xxxxx.xxxxxx.xxxx@xxxx.com’
EMAIL_HOST_PASSWORD = ‘Googleで生成したアプリパスワード’
EMAIL_USE_TLS = True

xxxxx_xxxxxxx.xxxのmail送信設定(awsのサンドボックス利用に変更してからは未使用)

# Gmailの送信設定(認証時など)
ADMINS = [(‘xxx-xxxxxxxx’, ‘xxxxx.xxxxxxxx.xxxx@xxxx.com’)]

SERVER_EMAIL = ‘xxxxx.xxxxxxxx.xxxx@gmail.com’

EMAIL_HOST = ‘smtp.gmail.com’
EMAIL_PORT = 587
EMAIL_HOST_USER = ‘xxxxx.xxxxxxxx.xxxx@xxxxx.com’
EMAIL_HOST_PASSWORD = ‘xxxxxxxxxxx’
EMAIL_USE_TLS = True

You May Also Like

More From Author

+ There are no comments

Add yours