以前的文章已經提到了 django+fastcgi的運行並不如意(web.py+spawn-fcgi卻正常不少……),因此特地抽時間研究了一下uwsgi,試了一下,運行的很好,也很快,哈哈。
因此筆者的全部以前用apache+django搭建的項目(如fuload等)都已經替換成了nginx+django+uwsgi。python
一.安裝uwsginginx
- 到http://projects.unbit.it/uwsgi/wiki/WikiStart#Getit 下載最新版本的uwsg。
- 解壓後,若是沒有安裝libxml2,又不想安裝的話,那麼編輯文件 buildconf/default.ini, 把
1 |
xml_implementation = libxml2 |
改爲web
1 |
xml_implementation = false |
- 執行編譯
1 |
python uwsgiconfig.py --build |
- 執行安裝
1 |
python setup.py install |
這樣,uwsgi就安裝上了~apache
二.nginx配置
配置要比fastcgi還簡單一些:django
1
2
3
4 |
location / {
include uwsgi_params; uwsgi_pass 127...1:9090; } |
三.django配置
在mysite的統計目錄(即setting.py的上級目錄),建立文件uws_app.py:flask
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:vim
1 |
uwsgi -s :9090 -w uws_app -p10 -d uws.error & |
其實也能夠不用寫uws_app.py這個文件,直接啓動uwsgi:bash
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 :app
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:post
1 |
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