KnowHow

技術的なメモを中心にまとめます。
検索にて調べることができます。

gunicornとNginxを使用してDjangoとFlaskのアプリケーションを同時に公開するための設定ファイル(ソケットファイル)

登録日 :2024/02/10 07:01
カテゴリ :Linux

こちらが gunicorn_django.socket と gunicorn_flask.socket の設定ファイルです。
(/etc/systemd/system/)

これらの設定ファイルを追加することで、各GunicornサービスがUnixソケットを介して通信するためのソケットファイルが作成されます。

DjangoのGunicornソケット設定ファイル (gunicorn_django.socket)

[Unit]
Description=gunicorn socket for Django

[Socket]
ListenStream=/run/gunicorn_django.sock

[Install]
WantedBy=sockets.target

FlaskのGunicornソケット設定ファイル (gunicorn_flask.socket)

[Unit]
Description=gunicorn socket for Flask

[Socket]
ListenStream=/run/gunicorn_flask.sock

[Install]
WantedBy=sockets.target

ソケットファイルとは

この gunicorn.socket ユニットファイルは、Gunicornがソケットを使用してリクエストを待ち受けるためのものです。各セクションの意味は次のとおりです:

[Unit]:

ソケットの説明を提供します。
[Socket]:

ソケットの設定を指定します。
ListenStream: ソケットが受信する接続の場所を指定します。この場合、UNIXドメインソケット /run/gunicorn.sock をリッスンしています。
[Install]:

ソケットをどのターゲットにインストールするかを指定します。
WantedBy: インストールするターゲットを指定します。この場合、sockets.target にインストールされます。
この設定ファイルにより、Gunicornは /run/gunicorn.sock というUNIXドメインソケットをリッスンし、そこに到着するすべてのリクエストを処理します。

ソケットとは

ソケット(socket)は、プログラム間やプロセス間で通信するための一般的な方法です。UNIXドメインソケットは、同じコンピュータ内のプロセス間通信のために使用されます。

UNIXドメインソケットは、ファイルシステム上の特定のファイルに関連付けられており、通常はディレクトリ /run や /tmp などにあります。これにより、通信にファイルディスクリプタが使用されるため、通常のネットワークソケットよりも高速に通信できます。

GunicornがUNIXドメインソケットをリッスンすることで、ローカルマシン上で動作するWebサーバとWebアプリケーション間で高速な通信を実現します。UNIXドメインソケットを使用することで、WebサーバとWebアプリケーションの間のリクエストとレスポンスのやり取りが迅速に行われます。