1. 程式人生 > >五步教你實現使用Nginx+uWSGI+Django方法部署Django程序

五步教你實現使用Nginx+uWSGI+Django方法部署Django程序

設置 wsgi alias admin 生效 server static 出現 mar

新建一個XML文件:

djangochina_socket.xml,將它放在/data/www/org_management目錄下:

Nginx采用8077端口與uWSGI通訊,請確保此端口沒有被其它程序采用

<uwsgi>
    <socket>:8077</socket>  
    <chdir>/data/www/org_management</chdir>
    <module>org_management.wsgi</module>
    <processes>4</processes> <!-- 進程數 --> 
    <daemonize>uwsgi.log</daemonize>
</uwsgi>

我們假設你將會把Nginx程序日誌放到你的目錄/data/www/org_management下,請確保該目錄存在。

我們假設你的Django的static目錄是/data/www/org_management/static/ , media目錄是/data/www/org_management/media/,請確保這些目錄存在。

我們假設你的域名是 www.you.com (在調試時你可以設置成你的機器IP或者直接註釋掉)

我們假設你的域名端口是 80(在調試時你可以設置一些特殊端口如 8070)

基於上面的假設,我們為/etc/nginx/conf.d 添加以下配置 org_nginx.conf 確保org_nginx.conf 在nginx的安裝目錄,否則會找不到

server {
        listen   80;   #服務器開放端口號
        server_name yl.longleding.com;   #域名如果沒有可以註釋
        access_log /data/www/org_management/logs/access.log;      
       #logs文夾必須有
        error_log /data/www/org_management/logs/error.log;
        #logs文件夾必須有

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
#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/xadmin/ { alias /data/www/org_management/extra_apps/xadmin/static/xadmin/; } #靜態文件夾 location /static/ { alias /data/www/org_management/static/; } #上傳文件目錄 location /media/ { alias /data/www/org_management/media/; } #建議放最後否則會出現找不到靜態文件情況 location / { include uwsgi_params; uwsgi_pass 127.0.0.1:8077; #和uwsgi通訊保持一致 } }

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

Nginx+uWSGI+Django的實現方式

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

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

  2. nginx -s  reload

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

  3. 啟動uWSGI服務器

    /data/www/org_management
    
    uwsgi -x djangochina_socket.xml

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

  4. 訪問服務

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

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

  5. 關閉服務的方法 killall uwsgi 關閉所有uwsgi 在開啟進程中可以設定一個uwsgi為主進程,殺死主進程即可 將uWSGi進程殺死即可。

一些建議

  1. uWSG配置文件的進程數,可以根據實際情況分配。不要開得太大,否則機器可能會內存耗用太高。一般來說,對於一個小社區來說,4個進程已經足夠了。

  2. 一般情況下,可以編寫一下 stop.sh 腳本 來關閉uWSGI。

五步教你實現使用Nginx+uWSGI+Django方法部署Django程序