■ 安装uwsgi:
作为一个严谨(其实就是有强迫症)的程序,为了确保正确安装这个东西,费了我好长时间。首先,查找包里的readme,发现没有安装提示。各种被墙,辗转良久,才查看到uwsgi的官方文档说明:
http://uwsgi-docs.readthedocs.org/en/latest/WSGIquickstart.html
所以,也就有了本文。
言归正传,下面是 uwsgi 的两种安装方式:
方式一:
采用源码(source tarball)安装uwsgi。
可以去pypi,搜索uwsgi下载:
https://pypi.python.org/pypi/uWSGI/
安装命令如下:
tar xvzf uwsgi-2.0.9.tar.gz
cd uwsgi-2.0.9
make
方式二:
使用pip安装uwsgi(这也是django1.7文档里推荐的方式):
pip install uwsgi
注:下图为官网的安装说明截图:
■ 配置uwsgi:
首先要明确的是,如果你喜欢用命令行的方式(如shell)敲命令,那可以省去任何配置。
但是,绝大多数人,还是不愿意记那么长的命令,反复敲的。所以uwsgi里,就给大家提供了多种配置,省去你启动时候,需要敲一长串命令的过程。
uwsgi 有多种配置可用:
1,ini ,
2,xml ,
3,json
4,yaml。
从uwsgi的官方文档来看,貌似(我个人的理解)推荐用ini方式,所以下面的配置也都是基于ini的。
● ini 格式说明:
1,ini配置为 key=value 形式
2,在ini配置文件里,#号为注释,
3,布尔值为 true 和 false
4,在命令行里,uwsgi myconf.ini 等价于 uwsgi --ini myconf.ini
● ini 配置示例:
[uwsgi]
socket = 127.0.0.1:8000
workers = 4
■ uwsgi 选项说明:
● 选项的格式:
1,命令行参数格式:--
2,配置格式(以ini为例):option = xxxx
● 常用选项:
socket : 地址和端口号,例如:socket = 127.0.0.1:50000
processes : 开启的进程数量
workers : 开启的进程数量,等同于processes(官网的说法是spawn the specified number of workers / processes)
chdir : 指定运行目录(chdir to specified directory before apps loading)
wsgi-file : 载入wsgi-file(load .wsgi file)
stats : 在指定的地址上,开启状态服务(enable the stats server on the specified address)
threads : 运行线程。由于GIL的存在,我觉得这个真心没啥用。(run each worker in prethreaded mode with the specified number of threads)
master : 允许主进程存在(enable master process)
daemonize : 使进程在后台运行,并将日志打到指定的日志文件或者udp服务器(daemonize uWSGI)。实际上最常用的,还是把运行记录输出到一个本地文件上。
log-maxsize :以固定的文件大小(单位KB),切割日志文件。 例如:log-maxsize = 50000000 就是50M一个日志文件。
pidfile : 指定pid文件的位置,记录主进程的pid号。
vacuum : 当服务器退出的时候自动清理环境,删除unix socket文件和pid文件(try to remove all of the generated file/sockets)
disable-logging : 不记录请求信息的日志。只记录错误以及uWSGI内部消息到日志中。如果不开启这项,那么你的日志中会大量出现这种记录:
[pid: 347|app: 0|req: 106/367] 117.116.122.172 () {52 vars in 961 bytes} [Thu Jul 7 19:20:56 2016] POST /post => generated 65 bytes in 6 msecs (HTTP/1.1 200) 2 headers in 88 bytes (1 switches on core 0)
● 其他选项说明:
其他选项,具体可以通过 --help 选项来查看:
uwsgi --help
注:下图为官网的 django ini 配置说明截图:
====================================================================================
■ 下面是一些比较实用的配置:
[uwsgi]disable-logging = true
■ 参考:
A,《官方文档》:
http://uwsgi-docs.readthedocs.org/en/latest/WSGIquickstart.html
B,《uWSGI参考资料》:
http://www.cnblogs.com/zhouej/archive/2012/03/25/2379646.html