[uwsgi]
# 对外提供 http 服务
http = 127.0.0.1:8000
# 用于和 nginx 进行数据交互,和 http 不能同时存在,要和 nginx 中 uwsgi_pass 一样
socket = 127.0.0.1:8000
# 项目所在目录
chdir = /data/wwwroot/product/django_package
# 或者填相对于 chdir 的路径(django_package/wsgi.py)
wsgi-file = /data/wwwroot/product/django_package/django_package/wsgi.py
# python 虚拟环境
home = /data/wwwroot/django_project/env
processes = 100 # 进程数
threads = 10 # 线程数
enable-threads = true # 允许用内嵌的语言启动线程,这将允许在app程序中产生一个子线程
master = true # 是否需要主进程
daemonize = /var/log/uwsgi.log # 后台运行,并输出日志
auto-procname = true # 自动给进程命名
procname-frefix-spaced = xc-mms # 为进程指定前缀
# 保存主进程 pid 文件
pidfile = /run/uwsgi/uwsgi.pid
# 在指定的地址上,开启服务状态,监控 uwsgi 的负载情况,可填(ip:port)
stats = /run/uwsgi/stats.sock
# uwsgi 不建议使用 root 权限去启动 uwsgi 实例,可以通过 root 用户去运行 uwsgi 文件,当通过 uid 和 gid 去修改用户(移除 root 权限),并且如果你使用的是 socket 通信方式,最好加上 chmod-socket 字段,在 linux 下,socket 的启动方式,套接字类似文件,必须保证有权限去读取它;
chmod-socket = 660
# 当服务器退出时,自动删除 unix socket 和 pid 文件
vacuum = true
disable-logging = true # 不记录 request 日志,只记录错误日志
uid = uwsgi # 启动 uwsgi 的用户名
gid = uwsgi # 启动 uwsgi 的用户组
emperor = /etc/uwsgi.d # 开启 uwsgi 的 emperor 模式,并指定臣子配置文件所处的目录
emperor-tyrant = true # 开启 emperor 的 tyrant 模式
cap = setgid,setuid
protocol = uwsgi # 设置默认的通信协议 (uwsgi、http、fastcgi)
plugins = python36u # 加载指定插件
buffer-size = 8192 # 设置用于 uwsgi 包解析的内部缓存区大小
close-on-exec = true # 给 uwsgi 的 socket 设置 close-on-exec 标识,可以避免在一个请求中产生额外的进程,来继承 socket 文件的描述符
配置实例:
/etc/uwsgi.ini
[uwsgi]
uid = uwsgi
gid = uwsgi
pidfile = /run/uwsgi/uwsgi.pid
emperor = /etc/uwsgi.d
stats = /run/uwsgi/stats.sock
chmod-socket = 660
emperor-tyrant = true
cap = setgid,setuid
/etc/uwsgi.d/dj_project.ini
[uwsgi]
plugins = python36u
master = true
protocol = uwsgi
socket = 127.0.0.1:8000
wsgi-file = /data/wwwroot/product/django_package/django_package/wsgi.py
home = /data/wwwroot/django_project/env
chdir = /data/wwwroot/product/django_package
buffer-size = 8192
enable-threads= true
close-on-exec = true