- uWSGI 是应用服务器,实现了uwsgi, wsgi等协议。能够执行wsgi 应用
- uwsgi 是协议名
Django配置
以下是自己常常常使用的一个配置模板。基于1.9以上的版本号使用的。 主要基于django应用
[uwsgi]djangoproject=/home/www/portalchdir=%(djangoproject)#virtualenv = /home/robc/.virtualenvs/workrave-cloud-server/#pythonpath = %(django_dir)wsgi-file=wsgi.pymodule = wsgienv=DJANGO_SETTINGS_MODULE=settingsdaemonize=%(djangoproject)/logs/uwsgi.logpidfile=%(djangoproject)/uwsgi.pidprint=%(daemonize)#you can use http mode test#socket=0.0.0.0:9001http=0.0.0.0:8000#user unix sock#socket = %(deploy_dir)/run/uwsgi-%(project).sock#chmod-socket = 777stats=/tmp/myapp.statusmemory-report=truelog-format = %(addr) - %(user) [%(ltime)] "%(method) %(uri) %(proto)" %(status) %(size) "%(referer)" "%(uagent)"master=Trueprocesses=8vacuum=Truemax-requests=8000eable-threads=Truebuffer-size=65535harakiri=30#listen queue number,you can see /proc/sys/net/core/somaxconn in linuxlisten=1024#user and group#uid = #gid =
- 设置权限须要加入
uid =
gid =来进行权限控制
- uWSGI能够使用socket 。http。或者unix socket,主要取决于应用场景
- 不想打印请求的log 能够配置
disable-logging = true
, 这样仅仅会打印启动log了 - 在某些情况下python C拓展在多个解释器协作中并不好使
single-interpreter = true
来解决 harakiri=30
django文档中也推荐了这个选项,30代表30秒。主要是保护进程。防止某些危急的request拖死整个进程,详细原理參考[doc](
) 假设应用有对外交互的接口。并且响应很慢的话,最好把值调大点,否则会常常重新启动。请求正常响应概率减少。
- max-requests 当达到设定值之后会优雅的重载一个process
- 配置文件里有些是属于uwsgi的
%d
配置文件所在文件夹的绝对路径,能够依据这个省去许多路径的硬编码%(params)
取出自己定义的变量的值
配置选项能够參考或者
其它
- 许多得採用 Emperor 模式(主要是用来监控配置文件,能够做到热插拔),也能够在uWSGI做python 应用的负载均衡
- 配置文件的热插拔比較好的做法是。配置文件夹+软连接
- gevent 或者 async 配置 对于纯django应用来说并没啥作用
配置静态文件
相似于nginx中的 alias
static-map = /static=/usr/lib/python2.6/site-packages/django/contrib/admin/static