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
+ There are no comments
Add yours