uwsgi配置文件格式
首先,uwsgi是可以完全不用配置文件,跟普通的shell命令一样,也可以正常使用,但是每次要修改的时候,也得输入全部的参数,所以保存到配置文件,然后修改文件后加载文件要方便的多。
uwsgi支持ini、xml、json等格式,我们只用过xml和ini2种,也仅此做个示例
xml
<uwsgi>
<socket>:98</socket> #本地监听的端口
<chdir>/project-dir</chdir> #项目主目录
<wsgi-file>/project-dir/wsgi.py</wsgi-file> #wsgi路径
<processes>2</processes> #工作进程数
<threads>10</threads> #工作线程数
<daemonize>uwsgi.daemonize.log</daemonize> #日志文件路径
<master>true</master>
<listen>50</listen> #监听队列
<enable-threads/> #允许在请求中开启新线程
<memory-report/> #日志记录请求的内存等详细信息
<pidfile>pidfile-path</pidfile> #pidfile路径
</uwsgi>
ini
[uwsgi]
chdir = %d../ #指定project目录为主目录
master = true #以独立守护进程运行
env = DJANGO_SETTINGS_MODULE=project_name.settings #项目的settings模块路径
module = project_name.wsgi:application #wsgi的application模块路径
socket=/project_dir/project.sock #本地监听的socket
http-websockets #websokcet over http,官放文档说nginx >= 1.4 works fine and without additional configuration.
gevent=100 #gevent协程支持,最大100个
gevent-monkey-patch #gevent协程补丁
processes = 2 #2个处理进程
enable-threads = true #允许在请求中开启新线程
listen=300 #监听队列
daemonize=uwsgi.daemonize.log #日志文件
memory-report #日志记录请求的内存等详细信息
pidfile=/pidfile-path #pidfile路径
uwsgi基本操作
启动uwsgi
uwsgi -x xxxx.xml #xml配置文件
uwsgi -i xxxx.ini #ini配置文件
重启uwsgi
首选要找到uwsgi的主进程号,如果使用了pidfile记录进程号,则可以简单的找到master pid,如果未使用pidfile选项,则到日志中查看日志
spawned uWSGI master process (pid: 7486) #主进程号
spawned uWSGI worker 1 (pid: 7487, cores: 10)
spawned uWSGI worker 2 (pid: 7488, cores: 10)
然后使用-HUP或-TERM
kill -HUP pid #友好重启,不会丢失会话
kill -TERM pid #强制重启,可能丢失会话
结束uwsgi
同重启uwsgi,需要先得到uwsgi的主进程号,然后使用
kill -INT pid
使用killall
在没使用pidfile参数记录uwsgi主进程号的情况下,如果服务器上只有一个uwsgi实例,可以使用killall命令控制uwsgi
killall -HUP uwsgi #所有的uwsgi实例都重启
killall -INT uwsgi #关闭所有uwsgi实例