nginx + uwsgi + Django 应用部署
生活随笔
收集整理的這篇文章主要介紹了
nginx + uwsgi + Django 应用部署
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
今天來看下基于Django開發的應用如何在Centos6環境部署
系統環境:Centos6.5 x64
軟件版本:Django 1.9.5 、uwsgi-2.0.13.1
nginx 安裝配置(略)請見:http://tchuairen.blog.51cto.com/3848118/1771597
一、安裝uwsgi
二、測試uwsgi
準備測試文件
test1.py
def?application(env,?start_response):start_response('200?OK',[('Content-Type','text/html')])return?"uwsgi?ok!"命令執行
uwsgi?--http?:8001?--wsgi-file?test1.py#?瀏覽器測試?IP:8001三、配置uwsgi+Django
創建Django wsgi文件(路徑和manage.py文件同級目錄,一般安裝了Django會自帶。)
wsgi.py
import?os import?sysfrom?django.core.wsgi?import?get_wsgi_applicationos.environ.setdefault("DJANGO_SETTINGS_MODULE",?"devops.settings")application?=?get_wsgi_application()創建 uwsgi 服務主配置文件
uwsgi.ini
[uwsgi] uid?=?www????????????????????????????????????????#?設置啟動的用戶組 gid?=?wwwchdir?=?/alidata/www/fdcode/devops???????????????#?指定項目目錄module?=?wsgi????????????????????????????????????#?加載wsgi.py模塊master?=?true????????????????????????????????????#?啟動主進程,一般設置true或?1processes?=?2????????????????????????????????????#?設置啟動的進程數listen?=?100?????????????????????????????????????#?設置socket監聽隊列大小,超出隊列的請求將會被拒絕;socket?=?/var/run/uwsgi/uwsgi.sock??????????????#?設置socket監聽socket?=?:9090???????????????????????????????????#?設置端口監聽pidfile?=?/var/run/uwsgi/uwsgi.pid???????????????#?指定pid文件vacuum?=?true????????????????????????????????????#?當服務器退出的時候自動刪除unixsocket文件和pid文件。enable-threads?=?true????????????????????????????#?允許用內嵌的語言啟動線程。這將允許你在app程序中產生一個子線程buffer-size?=?32768??????????????????????????????#?設置用于uwsgi包解析的內部緩存區大小為64k。默認是4k。reload-mercy?=?8?????????????????????????????????#?設置在平滑的重啟(直到接收到的請求處理完才重啟)一個工作子進程中,等待這個工作結束的最長秒數。這個配置會使在平滑地重啟工作子進程中,如果工作進程結束時間超過了8秒就會被強行結束(忽略之前已經接收到的請求而直接結束)max-requests?=?5000??????????????????????????????#?為每個工作進程設置請求數的上限。當一個工作進程處理的請求數達到這個值,那么該工作進程就會被回收重用(重啟)。你可以使用這個選項來默默地對抗內存泄漏limit-as?=?512???????????????????????????????????#?通過使用POSIX/UNIX的setrlimit()函數來限制每個uWSGI進程的虛擬內存使用數。這個配置會限制uWSGI的進程占用虛擬內存不超過256M。如果虛擬內存已經達到256M,并繼續申請虛擬內存則會使程序報內存錯誤,本次的http請求將返回500錯誤。harakiri?=?60????????????????????????????????????#?一個請求花費的時間超過了這個harakiri超時時間,那么這個請求都會被丟棄,并且當前處理這個請求的工作進程會被回收再利用(即重啟)daemonize?=?/alidata/log/uwsgi/uwsgi_server.log??#?使進程在后臺運行,并將日志打到指定的日志文件或者udp服務器啟動服務
uwsgi --ini uwsgi.ini
另一種配置方式
當.ini配置文件不好用時,也可以使用xml配置文件
uwsgi-socket.xml
<uwsgi><socket>127.0.0.1:8001</socket>??????????#?設置監聽地址:端口,如果監聽全部地址則可以這樣寫?:8001?<chdir>/alidata/www/dev/devops</chdir>???#?設置項目目錄<module>wsgi</module>????????????????????#?加載Django的?wsgi.py?模塊<processes>2</processes>?????????????????#?設置進程數<daemonize>uwsgi.log</daemonize>?????????#?設置日志文件路徑 </uwsgi>啟動服務
uwsgi -x?uwsgi-socket.xml
Nginx 配置文件
django_nginx.conf
server?{listen?80;server_name?abc.xxx.com;location?/?{rewrite?^/$?/ops01/login/?last;include?uwsgi_params;uwsgi_pass?127.0.0.1:9090;}location?/static?{alias?/alidata/www/fdcode/devops/static;}}uwsgi各項配置參數詳解,請參考 :?http://www.cnblogs.com/zhouej/archive/2012/03/25/2379646.html
轉載于:https://blog.51cto.com/tchuairen/1831281
總結
以上是生活随笔為你收集整理的nginx + uwsgi + Django 应用部署的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: reflow 和 repaint
- 下一篇: MS SQL的存储过程