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