五步教你實現使用Nginx+uWSGI+Django方法部署Django程序
新建一個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的實現方式
在完成上面配置後,需要按以下步驟來做:
-
重啟Nginx服務器,以使Nginx的配置生效。
-
nginx -s reload
重啟後檢查Nginx日誌是否有異常。
-
啟動uWSGI服務器
/data/www/org_management uwsgi -x djangochina_socket.xml
檢查日誌 uwsgi.log 是否有異常發現。
-
訪問服務
基於上面的假設你的域名是www.you.com
因此,我們訪問 www.you.com,如果發現程序與 單獨使用Django啟動的程序一模一樣時,就說明成功啦!
-
關閉服務的方法 killall uwsgi 關閉所有uwsgi 在開啟進程中可以設定一個uwsgi為主進程,殺死主進程即可 將uWSGi進程殺死即可。
一些建議
-
uWSG配置文件的進程數,可以根據實際情況分配。不要開得太大,否則機器可能會內存耗用太高。一般來說,對於一個小社區來說,4個進程已經足夠了。
-
一般情況下,可以編寫一下 stop.sh 腳本 來關閉uWSGI。
五步教你實現使用Nginx+uWSGI+Django方法部署Django程序