ngix uwsgi django組合建站

由于最近要做一個(gè)創(chuàng)新項(xiàng)目,需要用到python web開發(fā)停撞,于是研究了一下django這個(gè)很全能的python web框架捏悬。

為什么需要ngix呢佩脊?

首先說(shuō)一下為什么需要這三者組合建站,只用django的話随闽,不能做到負(fù)載均衡父丰,比如需要請(qǐng)求一些靜態(tài)資源,就需要django全部去處理橱脸,不能將請(qǐng)求合理分發(fā)础米,而ngix正好能解決這樣的問(wèn)題(似乎這個(gè)項(xiàng)目也不用怎么考慮負(fù)載均衡哈~~但是提高逼格總是必須的),ngix通過(guò)配置可以將一些動(dòng)態(tài)請(qǐng)求發(fā)給django處理添诉,而對(duì)于靜請(qǐng)求則自己處理屁桑,另外如果網(wǎng)站上還要運(yùn)行php頁(yè)面,那么ngix絕對(duì)是一個(gè)很好的選擇栏赴,將對(duì)php的請(qǐng)求分發(fā)給apache處理蘑斧,ngix和apache通過(guò)socket端口通信,然后返回給客戶端處理后的結(jié)果须眷。

然后為什么又需要uwsgi呢竖瘾?

WSGI是一種Web服務(wù)器網(wǎng)關(guān)接口。它是一個(gè)Web服務(wù)器(如nginx)與應(yīng)用服務(wù)器(如uWSGI服務(wù)器)通信的一種規(guī)范花颗。然后uwsgi是實(shí)現(xiàn)了uwsgi和WSGI兩種協(xié)議的Web服務(wù)器捕传。簡(jiǎn)單點(diǎn)說(shuō)就是運(yùn)用uwsgi我們可以實(shí)現(xiàn)由uwsgi啟動(dòng)django,然后ngix通過(guò)端口與uwsgi通信扩劝,在這個(gè)過(guò)程中庸论,gjango實(shí)現(xiàn)了wsgi服務(wù)器的功能,ngix實(shí)現(xiàn)了wsgi客戶端的功能棒呛,只不過(guò)在web里面聂示,ngix扮演的又是服務(wù)器(計(jì)算機(jī)中的軟件通信有很多都是客戶端服務(wù)器模式。如文件資源就是一個(gè)服務(wù)簇秒,然后應(yīng)用程序?qū)崿F(xiàn)了了相應(yīng)的協(xié)議從而去調(diào)用這個(gè)服務(wù))鱼喉。這樣就實(shí)現(xiàn)了uwsgi在ngix和django的中轉(zhuǎn)。

為什么不讓ngix直接與django通信呢趋观?

uWSGI扛禽,既不用wsgi協(xié)議也不用fcgi協(xié)議,而是自創(chuàng)了一個(gè)uwsgi的協(xié)議皱坛,據(jù)說(shuō)該協(xié)議大約是fcgi協(xié)議的10倍那么快旋圆。
uWSGI的主要特點(diǎn)如下:

  1. 超快的性能。
  2. 低內(nèi)存占用(實(shí)測(cè)為apache2的mod_wsgi的一半左右)麸恍。
  3. 多app管理灵巧。
  4. 詳盡的日志功能(可以用來(lái)分析app性能和瓶頸)搀矫。
  5. 高度可定制(內(nèi)存大小限制,服務(wù)一定次數(shù)后重啟等)刻肄。

這三者之間的原理如下瓤球,

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

開始部署

安裝ngix sudo apt-get install ngix

由于我的機(jī)器上面還有apache,我需要修改ngix的監(jiān)聽端口為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會(huì)自動(dòng)安裝最新版本

安裝uwsgi

apt-get install python-dev #不安裝這個(gè)敏弃,下面的安裝可能會(huì)失敗
pip install uwsgi

如果是apt-get安裝就需要

sudo apt-get install uwsgi-plugin-python

工具安裝好以后就可以開始配置項(xiàng)目了卦羡,我用的開發(fā)環(huán)境是pycharm,可以自動(dòng)生成django項(xiàng)目麦到,如果不是需要運(yùn)行django的admin.py生成相應(yīng)的項(xiàng)目文件下面是我的項(xiàng)目的結(jié)構(gòu)
.
└── 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文件內(nèi)容為:

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

這里需要注意的是wsgi模塊绿饵,網(wǎng)上很多都是錯(cuò)誤的,直接用自動(dòng)生成的就行瓶颠。
用socket和ngix進(jìn)行通信拟赊,端口號(hào)為本機(jī)的8630端口
然后需要在ngix的配置文件中添加

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

uwsgi是ngix自帶的模塊
重啟ngix服務(wù),然后啟動(dòng)uwsgi服務(wù)

$ uwsgi -x django.xml --plugin python

需要在django.xml所在目錄執(zhí)行

最后在瀏覽器輸入127.0.0.1:8080就可以看見django的調(diào)試頁(yè)面了~~

總結(jié)一下學(xué)到的其他東西:刪除/etc/dpkg/info/下面對(duì)應(yīng)的安裝文件粹淋,可以解決apt子進(jìn)程啟動(dòng)出錯(cuò)的問(wèn)題吸祟。刪了以后需要autoremove一下

資料分享:wsgi概念 uwsgi概念 基于nginx和uWSGI在Ubuntu上部署Django
如何把uwsgi交給supervisor管理 unavailable-modifier-requested-0解決辦法
uwsgi手冊(cè) uwsgi部署django常見問(wèn)題匯總 django中文教程 還是建議去看英文教程,完整點(diǎn)
如上便是我參考的資料

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末桃移,一起剝皮案震驚了整個(gè)濱河市屋匕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌借杰,老刑警劉巖过吻,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異蔗衡,居然都是意外死亡纤虽,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門粘都,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人刷袍,你說(shuō)我怎么就攤上這事翩隧。” “怎么了呻纹?”我有些...
    開封第一講書人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵堆生,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我雷酪,道長(zhǎng)淑仆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任哥力,我火速辦了婚禮蔗怠,結(jié)果婚禮上墩弯,老公的妹妹穿的比我還像新娘。我一直安慰自己寞射,他們只是感情好渔工,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著桥温,像睡著了一般引矩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上侵浸,一...
    開封第一講書人閱讀 52,475評(píng)論 1 312
  • 那天旺韭,我揣著相機(jī)與錄音,去河邊找鬼掏觉。 笑死区端,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的履腋。 我是一名探鬼主播珊燎,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼遵湖!你這毒婦竟也來(lái)了悔政?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤延旧,失蹤者是張志新(化名)和其女友劉穎谋国,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體迁沫,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡芦瘾,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了集畅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片近弟。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖挺智,靈堂內(nèi)的尸體忽然破棺而出祷愉,到底是詐尸還是另有隱情,我是刑警寧澤赦颇,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布二鳄,位于F島的核電站,受9級(jí)特大地震影響媒怯,放射性物質(zhì)發(fā)生泄漏订讼。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一扇苞、第九天 我趴在偏房一處隱蔽的房頂上張望欺殿。 院中可真熱鬧寄纵,春花似錦、人聲如沸祈餐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)帆阳。三九已至哺壶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蜒谤,已是汗流浹背山宾。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鳍徽,地道東北人资锰。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像阶祭,于是被迫代替她去往敵國(guó)和親绷杜。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • 最新心血來(lái)潮,想玩玩python于是自己花錢,租了一臺(tái)阿里云服務(wù)器玩玩. 第一次搭建, 處于摸著石頭過(guò)河階段,踩了...
    股金雜談閱讀 2,541評(píng)論 11 32
  • 學(xué)習(xí) Flask濒募,寫完一個(gè) Flask 應(yīng)用需要部署的時(shí)候鞭盟,就想著折騰自己的服務(wù)器。根據(jù)搜索的教程照做瑰剃,對(duì)于原理一...
    Cocoa_Coder閱讀 17,151評(píng)論 4 56
  • 寫在前面的話: 本文參考了其他人寫的很多文章齿诉,在后面的附錄中列舉出來(lái),未能及時(shí)列出的引用還望作者理解晌姚,本文僅僅作...
    如煙花非花閱讀 4,073評(píng)論 0 8
  • 13 上線 上一章中粤剧,你為你的項(xiàng)目創(chuàng)建了RESTful API。在本章中挥唠,你會(huì)學(xué)習(xí)以下知識(shí)點(diǎn): 配置一個(gè)生產(chǎn)環(huán)境 ...
    lakerszhy閱讀 1,517評(píng)論 1 6
  • # Python 資源大全中文版 我想很多程序員應(yīng)該記得 GitHub 上有一個(gè) Awesome - XXX 系列...
    aimaile閱讀 26,503評(píng)論 6 427