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

來源:互聯網
上載者:User

標籤:http   io   os   ar   使用   strong   sp   檔案   div   

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

在上一篇文章《五步教你實現使用Nginx+uWSGI+Django方法部署Django程式(上)》中,闡述了如何只使用uWSGI來部署Django程式。

當然,單單只有uWSGI是不夠的,在實際的部署環境中,Nginx是必不可少的工具。

在本篇文章中,我將一直延用“N步法”的風格來闡述如何將uWSGI與Nginx做串連來部署Django程式。並在最後,會較為完整的闡述本社區的部署方法。

本文大綱:

  • 環境介紹
  • 配置uWSGI
  • 配置Nginx
  • Nginx+uWSGI+Django的實現方式
  • 一些建議
環境介紹
  1. Ubuntu 12.04.1 LTS
  2. django 1.4.2
  3. nginx/1.2.6
  4. uWSGI 1.4.4

關於uWSGI的安裝可參見上一篇文章 上一篇文章《五步教你實現使用Nginx+uWSGI+Django方法部署Django程式(上)》

我們假定你已經安裝好Nginx了。

配置uWSGI

在上一篇文章《五步教你實現使用Nginx+uWSGI+Django方法部署Django程式(上)》中,我們是直接使用命令列來啟動uWSGI,在實際部署環境中,我們常用的是設定檔的方式,而非命令列的方式。我的一般做法是用命令列來測試是否uWSGI安裝成功,然後用設定檔來真正部署。

另外,為了實現Nginx與uWSGI的串連,兩者之間將採用soket來通訊方式。

在本節中,我們將使用uWSGI設定檔的方式來改進uWSGI的啟動方式。

假定你的程式目錄是 /home/work/src/sites/testdjango1/testdjango/mysite

我們將要讓Nginx採用8077連接埠與uWSGI通訊,請確保此連接埠沒有被其它程式採用。

注意,請確定你在上一節《五步教你實現使用Nginx+uWSGI+Django方法部署Django程式(上)》中的django_wsgi.py檔案已經存在了。

建立一個XML檔案:

djangochina_socket.xml,將它放在 /home/work/src/sites/testdjango1/testdjango/mysite 目錄下:

<uwsgi>    <socket>:8077</socket>    <chdir>/home/work/src/sites/testdjango1/testdjango/mysite</chdir>    <module>django_wsgi</module>    <processes>4</processes> <!-- 進程數 -->     <daemonize>uwsgi.log</daemonize></uwsgi>

在上面的配置中,我們使用 uwsgi.log 來記錄日誌,開啟4個進程來處理請求。

這樣,我們就配置好uWSGI了。

配置Nginx

我們假設你將會把Nginx程式日誌放到你的目錄/home/work/var/test/logs/下,請確保該目錄存在。

我們假設你的Django的static目錄是/home/work/src/sites/testdjango1/testdjango/collectedstatic/ , media目錄是/home/work/src/sites/testdjango1/testdjango/public/media/,請確保這些目錄存在。

我們假設你的網域名稱是 www.you.com (在調試時你可以設定成你的機器IP)

我們假設你的網域名稱連接埠是 80(在調試時你可以設定一些特殊連接埠如 8070)

基於上面的假設,我們為conf/nginx.conf添加以下配置

server {        listen   80;        server_name www.you.com;        access_log /home/work/var/test/logs/access.log;        error_log /home/work/var/test/logs/error.log;        #charset koi8-r;        #access_log  logs/host.access.log  main;        location / {         include        uwsgi_params;         uwsgi_pass     127.0.0.1:8077;        }        #error_page  404              /404.html;        # redirect server error pages to the static page /50x.html        #        error_page   500 502 503 504  /50x.html;        location = /50x.html {            root   html;        }        location /static/ {            alias  /home/work/src/sites/testdjango1/testdjango/collectedstatic/;            index  index.html index.htm;        }        location /media/ {            alias  /home/work/src/sites/testdjango1/testdjango/public/media/;        }    }

在上面的設定後,可以讓Nginx來處理靜態檔案(/static/ 和 /media/ )。非靜態檔案請求Nginx會發給 socket 8077,然後讓uWSGI來進行處理。

Nginx+uWSGI+Django的實現方式

在完成上面配置後,需要按以下步驟來做:

  1. 重啟Nginx伺服器,以使Nginx的配置生效。

    nginx -s  reload

    重啟後檢查Nginx日誌是否有異常。

  2. 啟動uWSGI伺服器

    cd /home/work/src/sites/testdjango1/testdjango/mysiteuwsgi -x djangochina_socket.xml

    檢查日誌 uwsgi.log 是否有異常發現。

  3. 訪問服務

    基於上面的假設你的網域名稱是www.you.com

    因此,我們訪問 www.you.com,如果發現程式與 單獨使用Django啟動的程式一模一樣時,就說明成功啦!

  4. 關閉服務的方法

    將uWSGi進程殺死即可。

一些建議
  1. uWSG設定檔的進程數,可以根據實際情況分配。不要開得太大,否則機器可能會記憶體耗用太高。一般來說,對於一個小社區來說,4個進程已經足夠了。

  2. 一般情況下,可以編寫一下 stop.sh 指令碼 來關閉uWSGI。

最後

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

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

END

轉自:http://django-china.cn/topic/124/

【轉】五步教你實現使用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.