一、前言 Django項(xiàng)目準(zhǔn)備好了,那么如何把項(xiàng)目部署到生產(chǎn)環(huán)境是需要接下來要考慮的事情,難不成還用調(diào)試時(shí)候用的 python manage.py runserver 0.0.0.0:8000 的這種方式布署,No,答案肯定不是,如果真的這樣弄,那只能為你的項(xiàng)目祈禱了。 OK,閑話少說,這節(jié)就來給大家講解一下,如果將Django項(xiàng)目布署到生產(chǎn)環(huán)境中。 目前最常用的django部署方式應(yīng)該當(dāng)屬Django+Nginx+Uwsgi組合了。今天 也是重點(diǎn)講解這種方式。 本文講解的部署環(huán)境以Mac系統(tǒng)操作為準(zhǔn),其它Liunx系的操作系統(tǒng),操作也大同小異。 二、環(huán)境準(zhǔn)備 1、安裝uwsgi
當(dāng)然在一些Ubuntu系統(tǒng)中,可能在安裝uwsgi前,安裝下述依賴庫,當(dāng)然本文以Mac系統(tǒng)操作為主
2、安裝nginx
安裝完后,默認(rèn)配置文件目錄: /usr/local/etc/nginx/nginx.conf 三、 配置 1、uwsgi配置 一般來講都是通過新建一個(gè)uwsgi.ini配置文件 ,將配置項(xiàng)都填寫進(jìn)去,當(dāng)然有可以直接以命令行的參數(shù)協(xié)帶必要的參數(shù)。 主要配置項(xiàng)如下圖所示: 2、Nginx配置 Nginx作為反向代理服務(wù),凌駕于uwsgi協(xié)議服務(wù)之前,整個(gè)流程走向原理:
Nginx配置主要項(xiàng): 主要三個(gè)參數(shù)需要重點(diǎn)關(guān)注: 1、一個(gè)靜態(tài)資源路徑location /static,alias需要配置Django項(xiàng)目存放絕對(duì)路徑地址。 2、uwsgi_pass:填寫在uwsgi中socket對(duì)應(yīng)的監(jiān)聽地址和端口號(hào)。 3、include: 填寫uwsgi_params文件存放的絕對(duì)路徑,通常此文件存放在nginx目錄下。 配置完成后,用命令先測(cè)試一下,如下: nginx -t -c /usr/local/etc/nginx/nginx.conf 四、 啟動(dòng) 啟動(dòng)uwsgi服務(wù)命令: wsgi --ini uwsgi.ini && nginx 五、 常見問題 1、如果未啟動(dòng)Nginx,直接通過django+uwsgi組合來啟動(dòng)django項(xiàng)目時(shí),訪問時(shí),提示 invalid request block size 解決方法:將uwsgi.ini文件中,socket改成http方式,如http = 0.0.0.0:8000 2、如果用nginx監(jiān)控的端口為80時(shí),啟動(dòng)nginx服務(wù),可能會(huì)出現(xiàn)權(quán)限的問題。 解決方法:sudo nginx |
|