之前的文章已经提到了 django+fastcgi的运行并不如意(web.py+spawn-fcgi却正常很多……),所以特意抽时间研究了一下uwsgi,试了一下,运行的很好,也很快,哈哈。
所以笔者的所有之前用apache+django搭建的项目(如fuload等)都已经替换成了nginx+django+uwsgi。
一.安装uwsgi
到http://projects.unbit.it/uwsgi/wiki/WikiStart#Getit 下载最新版本的uwsg。
解压后,如果没有安装libxml2,又不想安装的话,那么编辑文件 buildconf/default.ini, 把
xml_implementation = libxml2
改成
xml_implementation = false
执行编译
python uwsgiconfig.py --build
执行安装
python setup.py install
这样,uwsgi就安装上了~
二.nginx配置
配置要比fastcgi还简单一些:
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:9090;
}
三.django配置
在mysite的统计目录(即setting.py的上级目录),创建文件uws_app.py:
import sys
import os
sys.path.append(os.path.abspath(os.path.dirname(__file__)))
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
启动uwsgi:
uwsgi -s :9090 -w uws_app -p10 -d uws.error &
其实也可以不用写uws_app.py这个文件,直接启动uwsgi:
uwsgi --module='django.core.handlers.wsgi:WSGIHandler()' --env DJANGO_SETTINGS_MODULE=mysite.settings -s :9090 -p 10 -d uws.log --touch-reload=uws.tc &
四.web.py配置
创建文件 index.py :
#!/usr/bin/python
# -*- coding: utf-8 -*-
import web
urls = ("/.*", "hello")
class hello:
def GET(self):
return 'Hello, world!'
app = web.application(urls, globals())
application = app.wsgifunc()
启动uwsgi:
uwsgi -s :9091 -w index -p 2 -d uws.error &
OK,到此为止就整个配置完啦,简单吧!
使用了uwsgi之后的fuload运行也非常稳定:
最后是uwsgi的一些文档,大家可以看一下.
uwsgi 启动参数:
http://projects.unbit.it/uwsgi/wiki/Doc
uwsgi 配合django,web.py,flask等:
http://projects.unbit.it/uwsgi/wiki/Example