uWSGI简介
要注意 WSGI / uwsgi / uWSGI 这三个概念的区分。
- 1.WSGI是一种Web服务器网关接口。它是一个Web服务器(如nginx,uWSGI等服务器)与web应用(如用Flask框架写的程序)通信的一种规范。
- uWSGI是实现了uwsgi和WSGI两种协议的Web服务器
- uwsgi是一种线路协议而不是通信协议,在此常用于在uWSGI服务器与其他网络服务器的数据通信。
配置uWSGI之uwsgi.ini文件
添加配置文件 项目同名文件夹/uwsgi.ini。如:
/home/super/portrait/portrait/portrait.ini
文件以[uwsgi]开头,有如下配置项:
- 套接字方式 IP地址:端口号 【此模型需要有nginx】
socket=127.0.0.1:8000
- Http通信方式 IP地址:端口号
http=123.123.123.123:8000
- 项目当前工作目录
chdir=/home/super/portrait
- 项目中wsgi.py文件的目录,相对于当前工作目录
wsgi-file=portrait/wsgi.py
- 服务的pid记录文件
pidfile=portrait_uwsgi.pid
- 服务的日志文件位置
(这里做了两件事情,1.后台守护进程运行。2.所有的log输出到portrait_uwsgi.pid)
daemonize=portrait_uwsgi.log
- 开启主进程管理模式
master=true
uwsgi.ini文件内容
[uwsgi]
http=123.123.123.123:8000
chdir=/home/super/portrait
wsgi-file=portrait/wsgi.py
process=4
threads=8
pidfile=portrait_uwsgi.pid
daemonize=portrait_uwsgi.log
master=true
配置uWSGIp之setting.py文件
- 将DEBUG=True改为DEBUG=False,否在出错时浏览器里可以看到具体报错。
DEBUG = False
- ALLOWED_HOSTS = []改为ALLOWED_HOSTS = ['123.123.123.123']其中123.123.123.123为服务器IP地址。
ALLOWED_HOSTS = ['123.123.123.123']
启动uWSGI
uwsgi --ini portrait.ini
[super@XXXXXX portrait]$ uwsgi --ini portrait.ini
[uWSGI] getting INI configuration from portrait.ini
[super@XXXXXX portrait]$ ps -ef | grep 'uswgi'
super 19704 19252 0 14:17 pts/0 00:00:00 grep --color=auto uswgi
[super@XXXXX portrait]$ ps -ef | grep 'uwsgi'
super 19554 1 0 14:15 ? 00:00:00 uwsgi --ini portrait.ini
super 19563 19554 0 14:15 ? 00:00:00 uwsgi --ini portrait.ini
super 19566 19554 0 14:15 ? 00:00:00 uwsgi --ini portrait.ini
super 19729 19252 0 14:17 pts/0 00:00:00 grep --color=auto uwsgi
[super@XXXXXXX portrait]$ ls
停止uWSGI
uwsgi --stop portrait_uwsgi.pid
[super@XXXXXX portrait]$ uwsgi --stop portrait_uwsgi.pid
[super@XXXXXX portrait]$ ps -ef | grep 'uwsgi'
super 19984 19252 0 14:20 pts/0 00:00:00 grep --color=auto uwsgi
注意事项:
- 无论启动还是关闭,都有ps确认。
- 启动成功后,进程在后台执行,所有日志输出均在配置文件所在目录的portrait_uwsgi.log中。
- Django中代码有任何修改,需要重新启动uWSGI,runserver方式不需要重新启动。