一直想用uwsgi部署Django,因為uwsgi性能更好而且可以多進程跑(python manager.py runserver是單進程)。但在windows開發機上實驗的時候死活裝不了uwsgi(有人說可以裝,反正我沒裝成功),就放棄了(還是太輕浮了啊),其實使用uwsgi真的很簡單!步驟如下:
1、安裝uwsgi
pip install uwsgi
注意:需要root權限安裝,否則運行時會提示找不到uwsgi命令;或者到Python執行文件所在目錄找到uwsgi命令,通過絕對路徑執行uwsgi命令。如果你是windows環境,建議先放棄安裝uwsgi吧,先到linux環境體驗一下成功的樂趣后再來折騰windows環境吧。
2、配置uwsgi.ini文件
在Django的項目根目錄(有manage.py的目錄)下新建uwsgi.ini文件,配置內容如下(拷貝后將‘=’后面的內容改一下):
[uwsgi] #服務端口 http = :8000 #指定與Nginx通信的方式,不影響uwsgi本身運行。如果配置了需要到nginx中進行相關配置-才能通過nginx訪問Django # socket = 127.0.0.1:8001 # 啟動一個master進程,來管理其余的子進程 master = True processes = 4 threads = 2 #python虛擬環境目錄絕對路徑。如果有的話,home是虛擬環境根目錄,PYTHNONHOME是虛擬環境下的bin目錄(放置了Python執行文件) #home = /env #PYTHONHOME = /env/bin #django項目目錄,與manager.py同級 chdir = /var/www/項目名 #主應用中的wsgi,下面這種配法是在Django根目錄下運行uwsgi有效,主APP名為有settings.py的那個目錄名。如果是其他目錄運行,下面建議寫成絕對路徑。 wsgi-file = 主APP名/wsgi.py #服務停止時自動移除unix Socket和pid文件 vacuum = true #設置每個工作進程處理請求的上限,達到上限時,將回收(重啟)進程,可以預防內存泄漏 max-requests=5000 #設置后台運行保存日志。只要配置了daemonize就會讓uwsgi后台運行,同時將日志輸出到指定目錄 daemonize=/var/www/log #保存主進程的pid,用來控制uwsgi服務 pidfile=/tmp/xxx.pid #uwsgi --stop/reload xxx.pid 停止/重啟uwsgi #靜態文件映射 #static-map = /static=Django下static目錄的絕對路徑
3、啟動uwsgi
進入到Django根目錄,執行如下命令就行了
uwsgi uwsgi.ini