■ 安装uwsgi:
安装uwsgi,请看我上一篇文章:《uWSGI的安装与配置(官网摘录)》。
■ 配置uwsgi:
由于我们使用django,所以配置一个能跟django进行关联的ini,首先我们先看一下Django1.7官方文档给出的配置:
但是又看了一下uwsgi 的官方文档,发现上面的配置有点旧,新的配置做了简化,
所以,根据Django和uWSGI 的文档,我重新整理了一个新的配置,如下:
[uwsgi]
socket = 127.0.0.1:50000
chdir = /home/foobar/myproject/
wsgi-file = myproject/wsgi.py
processes = 2
stats = 192.168.1.18:9090
daemonize = /var/log/uwsgi/yourproject.log
vacuum = true
● 解释一下常用选项:
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 : 在指定的地址上,开启状态服务。注意,这里尽量用非127.0.0.1的IP。(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)
vacuum : 当服务器退出的时候自动清理环境,删除unix socket文件和pid文件(try to remove all of the generated file/sockets)
■ 启动uwsgi:
把上面编辑好的 ini 文件,保存为【 uwsgi_conf.ini 】,注意为ANSI格式,如果是UTF-8,则报错。
理论上可以把这个ini文件,放到服务器任意位置。但还是推荐放到项目下,然后运行:
uwsgi uwsgi_conf.ini
■ Nginx配置:
nginx安装不在叙述,这里主要讲如何更改nginx.conf:
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:50000;
}
■ 重启Nginx:
重启nginx,再次访问你的项目,一切OK!
■ 参考:
A,《你应该使用 Nginx + UWSGI》: (本文的主要参考,放弃使用uwsgi自带的负载均衡,由此而来)
http://www.linuxidc.com/Linux/2013-07/87286.htm
B,《uwsgi其二》:
http://www.nowamagic.net/academy/detail/1330331
C,《五步教你实现使用Nginx+uWSGI+Django方法部署Django程序(下) 》:
http://django-china.cn/topic/124/
D,《How to use Django with uWSGI》:(Django官网文档,本文的次要参考)
https://docs.djangoproject.com/en/1.7/howto/deployment/wsgi/uwsgi/