サーバー情報
【さくらのVPS】
メモリ:8GB
ストレージ:SSD 400GB
CPU:6コア
OS
CentOS7 x86_64
【さくらのVPS】
メモリ:8GB
ストレージ:SSD 400GB
CPU:6コア
CentOS7 x86_64
【さくらのVPS】
メモリ:8GB
ストレージ:SSD 400GB
CPU:6コア
CentOS7 x86_64
Python:3.6.8
pip:9.0.3
git:1.8.3.1
sql:9.2.24
PostgreSQL:9.2.24
Nginx:1.16.1
Django: 3.1.4
Gunicorn: 20.0.4
PythonではWebアプリケーションとWebサーバーのインタフェースとして PEP3333 で定義された WSGI(Web Server Gateway Interface)という仕様が広く利用されています。
この度の開発では前項まででご紹介しているように、Djangoで作成するWebアプリケーション、Nginxを用いるWebサーバーのインターフェースもPEP333を使用していますが、これらもWSGI仕様に準拠しています。
このため Gunicornといった優れたWSGIサーバーを利用することができます。
アプリケーションサーバーであるGunicornを起動することで、WebアプリケーションであるDjangoプロジェクトと、WebサーバーであるNginxが連携され、本番環境で動作するように設定します。
Linuxサーバーのシステムマネージャーである“Systemed”を用いると任意の動作を行うことが出来ます。
そのためシステムマネージャ―を制御するための中央管理ツールである”systemctl”コマンドにGunicornを登録していきます。
systemctlに登録した時点で、Daemon(デーモン)で起動します。
Daemonとは、バックグラウンドプロセスとして働くプログラムのことです。
「socketファイル」の作成を行います。
Djangoプロジェクト内に「sockファイル」を生成させます。
この「sockファイル」はNginxと連携させるためにとても重要な役割があるので、ここで作成する「socketファイル」は重要です。
systemctlとして登録を行う「socketファイル」の作成を行います。
Djangoプロジェクトが複数作成する場合もあるので、「socketファイル」の名前はプロジェクト名にしておくと分かりやすいです。
※☆☆☆:プロジェクト名
[Unit]
Description=gunicorn socket
[Socket]
ListenStream=/home/☆☆☆/☆☆☆.sock
SocketUser=■■■(ユーザー名)
[Install]
WantedBy=sockets.target
「socketファイル」の説明文を記載します。
後述する「serviceファイル」のポート番号を指定します。
今回は「sockファイル」を利用するので上記のように記載します。
必ず“sockets.target”を指定します。
「serviceファイル」の作成を行います。
このファイルは、指定したDjangoプロジェクトをWSGI仕様に準拠したGunicornで起動するためのコマンドを登録しておきます。
Djangoプロジェクトを更新した際に、その都度Gunicornを使用した起動コマンドを入力するのは非常に手間なので、予め登録しておくことはとても便利です。
systemctlとして登録を行う「serviceファイル」の作成を行います。
Djangoプロジェクトが複数作成する場合もあるので、「serviceファイル」の名前はプロジェクト名にしておくと分かりやすいです。
※☆☆☆:プロジェクト名
[Unit]
Description=gunicorn daemon
Requires=☆☆☆.socket
After=network.target
[Service]
User=■■■(ユーザー名)
Group=□□□(グループ名)
WorkingDirectory=/home/☆☆☆/
ExecStart=/home/★★★(仮想環境名)/bin/gunicorn –workers 3 –bind /home/☆☆☆/☆☆☆.sock ☆☆☆.wsgi:application
[Install]
WantedBy=multi-user.target
「serviceファイル」の説明文を記載します。
「socketファイル」との関連性を指定します。
「serviceファイル」を起動した際に、「socketファイル」の起動要求を行います。
必ず“network.target”を指定します。
Webアプリケーション用に新規作成した”root権限”を持たないユーザー名を記載。
“User”と同じ設定を行う。
※OSによって異なるので注意が必要
Djangoプロジェクトの”manage.py”が存在するディレクトリを指定します。
通信開始時に起動するコマンドを設定しま。
Gunicornがインストールされているディレクトリ(仮想環境下)を指定し、オプション設定として「sockファイル」を起動させます。
必ず“multi-user.target”を指定します。
下記操作を実施する前に、Daemonの再読み込みを実施します。
Gunicornの起動コマンド
Gunicornの再起動コマンド
Gunicornの停止コマンド