【轉】五步教你實現使用Nginx+uWSGI+Django方法部署Django程式(上)

來源:互聯網
上載者:User

標籤:blog   http   io   os   ar   使用   for   sp   檔案   

五步教你實現使用Nginx+uWSGI+Django方法部署Django程式(上)By Django中國社區 at 2013-05-12 15:05

Django的部署可以有很多方式,採用nginx+uwsgi的方式是其中比較常見的一種方式。

在這種方式中,我們的通常做法是,將nginx作為伺服器最前端,它將接收WEB的所有請求,統一管理請求。nginx把所有靜態請求自己來處理(這是NGINX的強項)。然後,NGINX將所有非靜態請求通過uwsgi傳遞給Django,由Django來進行處理,從而完成一次WEB請求。

可見,uwsgi的作用就類似一個橋接器。起到橋樑的作用。

NOTE:不使用nginx,只使用uwsgi+django也是可以實現WEB服務的。uwsgi也可以直接處理WEB請求。

為了完成上述的方式部署,我將分成兩篇文章來分別進行闡述。

  • 第一步先解決uwsgi與django的橋接。解決在沒有nginx的情況下,如何使用uwsgi+DJANGO來實現一個簡單的WEB伺服器。

  • 第二步解決uwsgi與Nginx的橋接。通過nginx與uwsgi的橋接,打通nginx與django的連通,從而比較完美的實現django的部署。

本文將分成五步來詳細闡述uwsgi+django的部署方式。nginx+uwsgi+django的部署將在下一篇 文章中闡述。

本文大綱:

  • 環境介紹
  • 安裝uwsgi
  • 測試uwsgi
  • 配置django
  • 串連django和uwsgi,實現簡單的WEB伺服器。
環境介紹
  1. Ubuntu 12.04.1 LTS
  2. django 1.4.2
安裝uwsgi

1.安裝pip

可以參考這篇文章:http://www.jsxubar.info/install-pip.html

2.安裝uwsgi

$ export LDFLAGS="-Xlinker --no-as-needed"$ pip install uwsgi
測試uwsgi

在你的機器上寫一個test.py

# test.pydef application(env, start_response):    start_response(‘200 OK‘, [(‘Content-Type‘,‘text/html‘)])    return "Hello World"

然後執行shell命令:

uwsgi --http :8001 --wsgi-file test.py

訪問網頁:

http://127.0.0.1:8001/

看在網頁上是否有Hello World

配置django

NOTE:

請保證你的django項目是正常使用的。可以使用

python manage.py runserver 0.0.0.0:8002

來測試一下你的django項目是否能正常跑起來。

請保證你的django程式已經關閉。

編寫django_wsgi.py檔案,將其放在與檔案manage.py同一個目錄下。

注意: 編寫檔案時需要注意語句os.environ.setdefault。比如,如果你的項目為mysite,則你的語句應該是 os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")

 1 2 3 4 5 6 7 8 91011121314
#!/usr/bin/env python# coding: utf-8import osimport sys# 將系統的編碼設定為UTF8reload(sys)sys.setdefaultencoding(‘utf8‘)os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")from django.core.handlers.wsgi import WSGIHandlerapplication = WSGIHandler()
串連django和uwsgi,實現簡單的WEB伺服器。

我們假設你的Django項目的地址是/home/work/src/sites/testdjango1/testdjango/mysite,

然後,就可以執行以下命令:

uwsgi --http :8000 --chdir /home/work/src/sites/testdjango1/testdjango/mysite --module django_wsgi

這樣,你就可以在瀏覽器中訪問你的Django程式了。所有的請求都是經過uwsgi傳遞給Django程式的。

最後:

關於如何將uwsgi與Nginx串連,可以期待下篇文章 《五步教你實現使用Nginx+Uwsgi+Django方法部署Django程式(下)》

最後面,請大家要支援Django中國社區哦,單靠一兩個人是不行的,一起推廣一下,讓Django社區更有力量哈!更有人氣哈!

推廣連結: http://django-china.cn/

參考、解釋及其它
  • wsgi: WSGI是一種Web伺服器網關介面。它是一個Web伺服器(如nginx)與應用伺服器(如uWSGI伺服器)通訊的一種規範。

    關於WSGI協議看這裡:WSGI

  • uWSGI: http://uwsgi-docs.readthedocs.org/en/latest/index.html uWSGI是一個Web伺服器,它實現了WSGI協議、uwsgi、http等協議。 Nginx中HttpUwsgiModule的作用是與uWSGI伺服器進行交換。

  • uwsgi: uwsgi同WSGI一樣是一種通訊協定,而uWSGI是實現了uwsgi和WSGI兩種協議的Web伺服器。

    uwsgi協議是一個uWSGI伺服器自有的協議,它用於定義傳輸資訊的類型(type of information),每一個uwsgi packet前4byte為傳輸資訊類型描述,它與WSGI相比是兩樣東西。

    關於uwsgi協議看這裡:The uwsgi protocol

  • 有了uWSGI為什麼還需要nginx?

    nginx具備優秀的靜態內容處理能力,然後將動態內容轉寄給uWSGI伺服器,這樣可以達到很好的用戶端響應。

  • 參考文獻:http://heipark.iteye.com/blog/1750970

END

Last edited by Django中國社區 (2013-05-12 23:35)

轉自:http://django-china.cn/topic/101/#top

【轉】五步教你實現使用Nginx+uWSGI+Django方法部署Django程式(上)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.