LoginSignup
13
9

More than 1 year has passed since last update.

Gunicornの設定ファイルの書き方

Posted at

はじめに

DjangoやFlaskなどのPythonアプリケーションを動かすwsgiサーバ、Gunicornの設定ファイルの書き方についてまとめてみました。

Gunicornの設定ファイルはPythonのスクリプトとして、各種設定を変数や関数として列挙していく形となる。
中身はPythonスクリプトなので通常のソースコードと同じように、ライブラリをimportしたり、Pythonのプログラムコードを記述することも可能。

環境

  • Python 3.9
  • Gunicorn 20.1

設定ファイル

Gunicornでよく使う設定値としては、下記のようなものがある。

settings.py
#
# Gunicorn config file
#
wsgi_app = 'hogeapp.wsgi:application'

# Server Mechanics
#========================================
# current directory
chdir = '/work/python/gunic/gu'

# daemon mode
daemon = False

# enviroment variables
raw_env = [
    'ENV_TYPE=dev',
    'HOGEHOGE_KEY=xxxxxxxxxxxxxxxxxxxxxxxxx'
]

# Server Socket
#========================================
bind = '0.0.0.0:8000'

# Worker Processes
#========================================
workers = 2

#  Logging
#========================================
# access log
accesslog = '/work/python/gunic/gu/logs/access.log'
access_log_format = '%(h)s %(l)s %(u)s %(t)s "%(r)s" %(s)s %(b)s "%(f)s" "%(a)s"'

# gunicorn log
errorlog = '-'
loglevel = 'info'

wsgi_app

wsgiのアプリケーションオブジェクト名。module_name:value形式でWSGIモジュールを指定する。

chdir

Gunicornプロセスが動作する際のカレントディレクトリ。
WSGIアプリケーションの起点となるホームディレクトリを設定しておく。

daemon

デーモン(バックグラウンド)モードで起動するか否かの設定値。
Trueではバックグラウンドでデーモンとして動作するが、Falseではフォアグラウンドでの動作となる。

raw_env

Gunicornのプロセスで使用する環境変数を指定する。WSGIのPythonアプリケーションで使用することもできるため、アプリ内で必要な環境変数類はここで定義する。
KEY=VALUE形式の文字列で配列で記述する。

bind

GunicornのListenポートとして待ち受けるポートを記載。
ネットワーク:ポートの形で指定する。

workers

WSGIのワーカープロセス数を指定する。

accesslog

Gunicornのアクセスログのファイル名を指定する。-を指定すると標準出力に出力される。
これはApacheやnginxのログようなクライアントからのリクエストに関するアクセスログとなる。

access_log_format

アクセスログのフォーマット形式。
設定できるパラメータ変数は公式ドキュメントを参照。
LTSVやJSON(ndjson)形式でログを書き出したい場合は、ここで各フォーマットに適合した形式で設定することで行うことができる。

errorlog

Gunicornログのファイル名。-を指定すると標準出力に出力される。
errorlogという名前になっているが、エラーだけでなくGunicorn本体の動作全般のログとなる。

loglevel

errorlog のログレベルを指定する。
指定可能なレベルは、debuginfowarningerrorcriticalが指定可能。

設定ファイルの使い方

通常

gunicornコマンドに、--configオプションで作成した設定ファイルを指定することで、使用することができる。

$ gunicorn --config /path/to/app/settings.py

gunicornコマンドは--configオプションと併せて任意のオプションも利用可能。
設定ファイル内で設定された項目と重複して指定した場合、オプション引数側が優先されるため、これを利用して設定値を部分的に差し替えたりすることも可能。

$ gunicorn --config /path/to/app/settings.py --chdir /path/to/dev/app

仮想環境(venv)を利用する場合

Gunicornに限ったことでは無いが、仮想環境(venv)にインストールしたコマンドを利用するには、仮想環境ディレクトリ内にあるGunicornコマンドを利用する。
今回の場合、仮想環境内のgunicornを利用するには、仮想環境ディレクトリ内にあるgunicornコマンドを実行することで、使用することができる。
この場合、Gunicornで実行するアプリケーションも仮想環境の構成を利用して起動される。

$ /path/to/venv/bin/gunicorn --config /path/to/app/settings.py

参考

Settings — Gunicorn 20.1.0 documentation

13
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
9