linux下nginx+python+uwsgi部署总结(django+web.py)

之前的文章已经提到了 django+fastcgi的运行并不如意(web.py+spawn-fcgi却正常很多……),所以特意抽时间研究了一下uwsgi,试了一下,运行的很好,也很快,哈哈。
所以笔者的所有之前用apache+django搭建的项目(如fuload等)都已经替换成了nginx+django+uwsgi。

一.安装uwsgi

  1. http://projects.unbit.it/uwsgi/wiki/WikiStart#Getit 下载最新版本的uwsg。
  2. 解压后,如果没有安装libxml2,又不想安装的话,那么编辑文件 buildconf/default.ini, 把
    1
    
    xml_implementation = libxml2

    改成

    1
    
    xml_implementation = false
  3. 执行编译
    1
    
    python uwsgiconfig.py --build
  4. 执行安装
    1
    
    python setup.py install

这样,uwsgi就安装上了~

二.nginx配置
配置要比fastcgi还简单一些:

1
2
3
4
location / { 
    include uwsgi_params;
    uwsgi_pass 127.0.0.1:9090;
}

三.django配置
在mysite的统计目录(即setting.py的上级目录),创建文件uws_app.py:

1
2
3
4
5
6
7
8
9
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:

1
uwsgi -s :9090 -w uws_app -p10 -d uws.error &

其实也可以不用写uws_app.py这个文件,直接启动uwsgi:

1
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 :

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/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:

1
uwsgi -s :9091 -w index -p 2 -d uws.error &

OK,到此为止就整个配置完啦,简单吧!

使用了uwsgi之后的fuload运行也非常稳定:

1


最后是uwsgi的一些文档,大家可以看一下.

uwsgi 启动参数:
http://projects.unbit.it/uwsgi/wiki/Doc

uwsgi 配合django,web.py,flask等:
http://projects.unbit.it/uwsgi/wiki/Example

posted @ 2013-06-06 11:13  天涯海角路  阅读(567)  评论(0)    收藏  举报