ubuntu AWS Django & Postgres デプロイ
■ EC2 インスタンスを作成する
・ubuntu で 作成
■ テラタームで接続
・接続情報を、EC2インスタンスの 「接続」 で確認して、
アカウント名:ubuntu
パスワード: pemキー で
接続をする。
■ テラタームでコマンドを打つ
$ sudo apt-get update => データベースのカタログを更新する
###### ポスグレの設定(作成:夏目智徹)
# postgres という ユーザー名で psql を実行
$ sudo -u postgres psql
======= ポスグレ コマンド Start
ユーザ一覧を表示
postgres=# \du
データベース一覧を表示
postgres=# \l
接続中のデータベースの情報を表示
postgres=# \conninfo
テーブル一覧を表示
postgres=# \z
テーブル定義を確認
postgres=# \d tablenametablenameには任意のテーブル名を入れる。
======= ポスグレ コマンド END
### データベース作成
postgres =# CREATE DATABASE create_DB;
### ユーザー 、パスワード 設定
postgres =# CREATE USER jim_user WITH PASSWORD 'jimjimjim';
### 日本語 設定
postgres =# ALTER ROLE jim_user SET client_encoding TO 'utf-8';
### トランザクション設定 実行した結果だけを見に行く
postgres =# ALTER ROLE jim_user SET default_transaction_isolation TO 'read commiited';
### timezone の設定
postgres =# ALTER ROLE jim_user SET timezone TO 'UTC+9';
### ユーザー権限 設定
postgres =# GRANT ALL PRIVILEGES ON DATABASE kanai_project TO jim_user ;
### ポスグレコマンドライン から 抜ける
\q
# ポスグレが 起動しているかの 確認
$ ps aux
■ テラターム (virtualenv) を インストールして 仮想環境を追加
# pip のインストール & アップグレード
$ sudo -H pip3 install --upgrade pip
# virtualenv 追加
$ sudo -H pip3 install virtualenv
# virtualenv 作成
$ virtualenv py38
# activate ファイルの確認
$ ls py38/bin
# activate 実行
$ source py38/bin/activate
$ pip install django gunicorn psycopg2
■ ローカルファイル を クラウドへアップロード
・win-scp を 使う
・win-sqp
・転送プロトコル scp
・ホスト名: サーバーの パブリックip
・ユーザー名:ubuntu
・パスワード: 「設定」 ー> ssh 認証
〇接続ができたら、プロジェクトファイルをアップロードする。
■ Django 設定
※Djangoでマイグレーションを実行する際にインストール時の構成によっては、PostgreSQL接続アダプターのエラーが出ることがあります。
その場合は、以下のコマンドを実行して最新のパッケージを追加してみてください。
$ pip install psycopg2-binary
・$vi setting.py => 開く
・setting.py
i => インサートモード
alt + v で ペースト
# 接続先の IP を入れる
ALLOWED_HOSTS =
ALLOWED_HOSTS = ['13.115.228.94']
■ポスグレ設定
esc キー
:wq で保存
$python3 manage.py makemigrations
$python3 manage.py migrate
「ルールの追加」 ー> タイプ:カスタムTCPルール , port Range : 8000 , ソース カスタム 0.0.0.0/0
$python manage.py runserver 0.0.0.0:8000
*****パブリックipをブラウザに打ち込んで 表示*******
パブリックIP + :8000
■ 管理ユーザーの作成
# Django の 管理ユーザー作成
$python3 manage.py createsuperuser
tossy777
p:tossy
■ Gunicorn を 単体で動かす
・Gunicorn が あるかの確認
$ which gunicorn
/home/ubuntu/kanai_project
(py38) ubuntu@ip-172-31-40-206:~/kanai_project$ which gunicorn
/home/ubuntu/py38/bin/gunicorn
(py38) ubuntu@ip-172-31-40-206:~/kanai_project$
### バインドする
$gunicorn --bind 0.0.0.0:8000 kanai_project.wsgi
バインドしたら、
deactivate
で、仮想環境から抜ける
■ 仮想環境からではなく、OS の起動時に 起動するように設定する
# 起動ファイル群 を確認
$ ls /etc/systemd/system
### gunicorn 設定ファイル 作成
$ sudo vi /etc/systemd/system/gunicorn.service
[Unit]
Description=gunicorn daemon
After=network.target
[Service]
User=ubuntu
Group=www-data
WorkingDirectory=/home/ubuntu/kanai_project
ExecStart=/home/ubuntu/py38/bin/gunicorn --access-logfile - --workers 3 --bind unix:/home/ubuntu/kanai_project/kanai_project.sock kanai_project.wsgi:application
[Install]
WantedBy=multi-user.target
### システムの起動
$sudo systemctl start gunicorn
$sudo systemctl enable gunicorn
### ※ システム設定が間違った場合のリロードコマンド
$sudo systemctl daemon-reload
###格納場
$ /etc/systemd/system
$ /etc/systemd/system/multi-user.target.wants/
### ソケット sock ができているかの確認
$ ls /home/ubuntu/kanai_project
$ sudo systemctl status gunicorn
### ログ確認
$ sudo journalctl -u gunicorn
■ Nginx から Gunicorn 経由で アプリを動かす
$ cd /etc/nginx
$ cd sites-available/
$ vi default
### ファイル追加
$ sudo vi kanai_project
server {
listen 80;
server_name 13.115.228.94;
location /static/ {
root /home/ubuntu/kanai_project;
}
location / {
include proxy_params;
}
}
client_max_body_size 20M; #追加。リクエスト送信の最大サイズを20Mバイトにします
### シンボリックリンク作成
$ sudo ln -s /etc/nginx/sites-available/kanai_project /etc/nginx/sites-enabled/
### シンボリック確認
$ ls -la /etc/nginx/sites-enabled/
### nginx 設定 テスト
$ sudo nginx -t
$ sudo systemctl restart nginx
### 8000番 ポートの無効化
$ sudo ufw delete allow 8000
11111番ポート(TCP)へのアクセス許可のルールを設定する。
root@server:~# ufw allow 11111
$sudo ufw allow 8000
### nginx のアクセス許可
$ sudo ufw allow 'Nginx Full'
### 再起動
$sudo systemctl restart nginx
■ aws の es2 のアクセスを許可する 80ポート
インバウンド
「セキュリティグループ」 -> 「編集」 ー> 「ルールの追加」 ->
タイプ:http ポート 80
保存
$ sudo systemctl restart gunicorn
「セキュリティグループ」を追加して。
■ /admin に cssを適用させる
$ cd sites-available/
$ vi default
### ファイル追加 文追加
$ sudo vi kanai_project
/py38/lib/python3.8/site-packages/django/contrib/admin/static/admin
**************** 追加
location /static/admin {
}
************** **************
**************** 追加
location /static/summernote {
}
************** **************
### 再起動
$sudo systemctl restart nginx
■ manage.py コマンド
### migration 結果 確認コマンド
$python3 manage.py showmigrations
### static ファイルが有効か確認するコマンド
$python3 manage.py findstatic .
■ static 本番環境へのデプロイ
本番環境へのデプロイ時はcollectstaticを実行します。
$python3 manage.py collectstatic
python manage.py collectstatic
■ nginx , conf 設定
/etc/nginx/nginx.conf