【uWSDI】実戦のDjango配置経験
Django構成
以下は自分がよく使う構成テンプレートで、1.9以上のバージョンで使用され、主にdjangoアプリケーションに基づいています.
[uwsgi]
djangoproject=/home/www/portal
chdir=%(djangoproject)
#virtualenv = /home/robc/.virtualenvs/workrave-cloud-server/
#pythonpath = %(django_dir)
wsgi-file=wsgi.py
module = wsgi
env=DJANGO_SETTINGS_MODULE=settings
daemonize=%(djangoproject)/logs/uwsgi.log
pidfile=%(djangoproject)/uwsgi.pid
print=%(daemonize)
#you can use http mode test
#socket=0.0.0.0:9001
http=0.0.0.0:8000
#user unix sock
#socket = %(deploy_dir)/run/uwsgi-%(project).sock
#chmod-socket = 777
stats=/tmp/myapp.status
memory-report=true
log-format = %(addr) - %(user) [%(ltime)] "%(method) %(uri) %(proto)" %(status) %(size) "%(referer)" "%(uagent)"
master=True
processes=8
vacuum=True
max-requests=8000
eable-threads=True
buffer-size=65535
harakiri=30
#listen queue number,you can see /proc/sys/net/core/somaxconn in linux
listen=1024
#user and group
#uid =
#gid =
uid = gid =
権限制御を行う
disable-logging = true
を構成することができ、これによりsingle-interpreter = true
をharakiri=30
djangoドキュメントでは、このオプションも推奨されています.30は30秒を表し、主にプロセスを保護し、いくつかの危険なrequestがプロセス全体を殺すことを防止します.具体的な原理は[doc](http://uwsgi-docs.readthedocs.org/en/latest/FAQ.html#what-is-harakiri-mode)外部にインタラクティブなインタフェースが適用され、応答が非常に遅い場合は、値を大きくしたほうがいいです.そうしないと、頻繁に再起動し、正常な応答を要求する確率が低下します.
%d
プロファイルが存在するディレクトリの絶対パスは、これに基づいて多くのパスを省くハードコーディング%(params)
カスタム変数の値構成オプションは、公式ドキュメントまたはこのpptを参照できます.
その他
nginxのaliasに似ています
static-map = /static=/usr/lib/python2.6/site-packages/django/contrib/admin/static