uwsgi
是一个用c语言编写的高性能web服务器,在部署一般的web
项目时,是一个很不错的选择。本文简单介绍了用其部署flask
项目的过程。
环境说明: centos 7.5 、python3.6
一、安装
yum install python-devel -y
pip install uwsgi
这里有个坑,会报下图中的错误。
解决方法:安装与python版本对应的python-devel
改为:yum install python36-devel -y,然后再次安装即可
二、配置
在项目同目录下新建 uwsgi.ini
文件,参考配置如下。
[uwsgi]
#单独部署时监听配置
http=0.0.0.0:16666
#与nginx配合时监听配置
#socket=0.0.0.0:16666
#项目入口文件
wsgi-file=xxx/app.py
#程序上下文
callable = app
#启用主进程
master = true
#虚拟地址,多个项目时不能为true
vhost = true
#启用缓存
cache = true
#在每个worker而不是master中加载应用
lazy-apps = true
#允许在程序中启动新线程
enable-threads = true
#设置平滑的重启(直到处理完接收到的请求)的长等待时间(秒)
reload-mercy = 10
#设置请求的最大大小
buffer-size = 65535
#开启内存使用情况报告
memory-report = true
#服务停止后,清除pid文件
vacuum = true
#每个uWSGI进程的虚拟内存使用最大值
limit-as = 2048
#工作进程数
workers = 8
#串行化accept,防止“惊群”现象
thunder-lock = True
#pid文件,记录主进程的pid
pidfile=/var/run/uwsgi.pid
#后台运行,输出日志
daemonize=/var/log/uwsgi.log
#json格式记录各进程的运行状况
stats=uwsgi.status
#进程处理超时时间
http-timeout = 4800
#请求超时时间
harakiri = 4800
三、服务操作
- 启动
uwsgi --ini uwsgi.ini - 停止
uwsgi stop /var/run/uwsgi.pid - 重启
uwsgi restart /var/run/uwsgi.pid
因为配置有pidfile=/var/run/uwsgi.pid
,启动后,会在该文件中生成uwsgi的主进程id号,因此停止和重启操作能使用该文件完成。
uwsgi启动和重启都比较耗时,因此在测试和联调时,建议使用flask自带的web服务器进行Debug调试。