ngix uwsgi django组合建站

由于最近要做一个创新项目,需要用到python web开发,于是研究了一下django这个很全能的python web框架。

为什么需要ngix呢?

首先说一下为什么需要这三者组合建站,只用django的话,不能做到负载均衡,比如需要请求一些静态资源,就需要django全部去处理,不能将请求合理分发,而ngix正好能解决这样的问题(似乎这个项目也不用怎么考虑负载均衡哈~~但是提高逼格总是必须的),ngix通过配置可以将一些动态请求发给django处理,而对于静请求则自己处理,另外如果网站上还要运行php页面,那么ngix绝对是一个很好的选择,将对php的请求分发给apache处理,ngix和apache通过socket端口通信,然后返回给客户端处理后的结果。

然后为什么又需要uwsgi呢?

WSGI是一种Web服务器网关接口。它是一个Web服务器(如nginx)与应用服务器(如uWSGI服务器)通信的一种规范。然后uwsgi是实现了uwsgi和WSGI两种协议的Web服务器。简单点说就是运用uwsgi我们可以实现由uwsgi启动django,然后ngix通过端口与uwsgi通信,在这个过程中,gjango实现了wsgi服务器的功能,ngix实现了wsgi客户端的功能,只不过在web里面,ngix扮演的又是服务器(计算机中的软件通信有很多都是客户端服务器模式。如文件资源就是一个服务,然后应用程序实现了了相应的协议从而去调用这个服务)。这样就实现了uwsgi在ngix和django的中转。

为什么不让ngix直接与django通信呢?

uWSGI,既不用wsgi协议也不用fcgi协议,而是自创了一个uwsgi的协议,据说该协议大约是fcgi协议的10倍那么快。
uWSGI的主要特点如下:

  1. 超快的性能。
  2. 低内存占用(实测为apache2的mod_wsgi的一半左右)。
  3. 多app管理。
  4. 详尽的日志功能(可以用来分析app性能和瓶颈)。
  5. 高度可定制(内存大小限制,服务一定次数后重启等)。

这三者之间的原理如下,

the web client <-> the web server(nginx) <-> the socket <-> uwsgi <-> Django

开始部署

安装ngix sudo apt-get install ngix

由于我的机器上面还有apache,我需要修改ngix的监听端口为8080
修改如下

server {
    listen 8080 default_server;
    listen [::]:8080 default_server ipv6only=on;

    root /var/ngix;  #将根目录改为/var/ngix
    index index.html index.htm;
}

安装django

用python自带的包管理器easy_install安装 easy_install django会自动安装最新版本

安装uwsgi

apt-get install python-dev #不安装这个,下面的安装可能会失败
pip install uwsgi

如果是apt-get安装就需要

sudo apt-get install uwsgi-plugin-python

工具安装好以后就可以开始配置项目了,我用的开发环境是pycharm,可以自动生成django项目,如果不是需要运行django的admin.py生成相应的项目文件下面是我的项目的结构
.
└── myproject
├── app
│ ├── admin.py
│ ├── init.py
│ ├── migrations
│ │ └── init.py
│ ├── models.py
│ ├── tests.py
│ └── views.py
├── db.sqlite3
├── manage.py
├── myproject
│ ├── django.xml
│ ├── init.py
│ ├── init.pyc
│ ├── settings.py
│ ├── settings.pyc
│ ├── urls.py
│ ├── urls.pyc
│ ├── wsgi.py
│ └── wsgi.pyc
├── templates

django.xml文件内容为:

<uwsgi>
    <socket>127.0.0.1:8630</socket>
    <chdir>/var/ngix/myproject/myproject</chdir>
    <pythonpath>..</pythonpath>
    <module>wsgi</module>
</uwsgi>

这里需要注意的是wsgi模块,网上很多都是错误的,直接用自动生成的就行。
用socket和ngix进行通信,端口号为本机的8630端口
然后需要在ngix的配置文件中添加

location / {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:8630;
}

uwsgi是ngix自带的模块
重启ngix服务,然后启动uwsgi服务

$ uwsgi -x django.xml --plugin python

需要在django.xml所在目录执行

最后在浏览器输入127.0.0.1:8080就可以看见django的调试页面了~~

总结一下学到的其他东西:删除/etc/dpkg/info/下面对应的安装文件,可以解决apt子进程启动出错的问题。删了以后需要autoremove一下

资料分享:wsgi概念 uwsgi概念 基于nginx和uWSGI在Ubuntu上部署Django
如何把uwsgi交给supervisor管理 unavailable-modifier-requested-0解决办法
uwsgi手册 uwsgi部署django常见问题汇总 django中文教程 还是建议去看英文教程,完整点
如上便是我参考的资料

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,029评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,238评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,576评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,214评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,324评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,392评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,416评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,196评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,631评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,919评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,090评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,767评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,410评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,090评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,328评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,952评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,979评论 2 351

推荐阅读更多精彩内容