uwsgi
首先要说的是wsgi:是一种协议,规范了语言与webserver之间的通信方式,并且是专为Python设计的,主流的框架都支持该协议
主要实现:
- 重写环境变量后,根据目标URL,将请求消息路由到不同的应用对象。
- 允许在一个进程中同时运行多个应用程序或应用框架。
- 负载均衡和远程处理,通过在网络上转发请求和响应消息。
- 进行内容后处理,例如应用XSLT样式表。
uWSGI 是一个快速的、纯C语言开发的、自维护的、对开发者友好的 WSGI 服务器,旨在提供专业的 Python web应用发布和开发。
Apache及Nginx都有对应的模块进行整合,以支持uwsgi
其作用就相当于fastcgi,但fastcgi做的只是减少请求过程中对于脚本语言解析器的初始化及销毁时间
启动:
uwsgi uwsgi.ini
关闭
killall -9 uwsgi
重启
killall -s HUP uwsgi
uwsgi 的参数:
-M 开启Master进程
-p 4 开启4个进程
-s 使用的端口或者socket地址
-d 使用daemon的方式运行, 注意, 使用-d后, 需要加上log文件地址, 比如-d /var/log/uwsgi.log
-R 10000 开启10000个进程后, 自动respawn下
-t 30 设置30s的超时时间, 超时后, 自动放弃该链接
–limit-as 32 将进程的总内存量控制在32M
-x 使用配置文件模式
-M 开启Master进程
-p 4 开启4个进程
-s 使用的端口或者socket地址
-d 使用daemon的方式运行, 注意, 使用-d后, 需要加上log文件地址, 比如-d /var/log/uwsgi.log
-R 10000 开启10000个进程后, 自动respawn下
-t 30 设置30s的超时时间, 超时后, 自动放弃该链接
–limit-as 32 将进程的总内存量控制在32M
-x 使用配置文件模式
文件配置:以django为例(python)
socket=127.0.0.1:8000(绑定端口)chdir=/var/www(执行目录)module=wsgi:appaction(在执行目录下的执行文件及对应模块,例如python的import导入)env=DJANGO_SETTINGS_MODULE=settings(环境变量,设置django的设置文件)pidfile=/tmp/master.pid(进程pid文件)master=True(master进程)static-map=/static=/var/www/static(静态目录映射)daemonize=/var/log/uwsgi.log(daemon方式运行)http-socket=:8000(单纯设定本机http端口)processes=4(开启几个子进程)max-requests=5000(每个进程最大执行求情数)